2015-03-18 18 views
6

Dal official hibernate documentation:intesa sospensione @type annotazione

@ org.hibernate.annotations.Type sostituisce il tipo di sospensione predefinito utilizzata: questo non è generalmente necessario dato che il tipo è correttamente inferita da Hibernate

C'è un esempio dalla documentazione:

@Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType") 
@Columns(columns = { 
    @Column(name="r_amount"), 
    @Column(name="r_currency") 
}) 
public MonetaryAmount getAmount() { 
    return amount; 
} 

Non lo capisco. Dichiariamo @Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType") ma il valore di ritorno del metodo ha il tipo MonetaryAmount.

Mi aspettavo che il tipo dichiarato nell'annotazione del tipo e il tipo del valore restituito fossero dello stesso tipo.

Impossibile che qualcuno spieghi gli scopi reali del tipo, dichiarato all'interno dell'annotazione @Type. Perché è diverso dal tipo restituito?

+0

Forse questo sarà utile. http://stackoverflow.com/questions/9533935/how-to-force-hibernate-to-return-dates-as-java-util-date-instead-of-timestamp – Scruffy

risposta

8

C'è differenza tra il tipo di ritorno e @Type.

@Type l'annotazione è per ibernazione, vale a dire indicare quale tipo di dati si desidera memorizzare nel database.

Facciamo un semplice esempio:

@Type(type="yes_no") 
private boolean isActive; 

qui Return tipo è boolean ma il valore che vengono memorizzati nel database sarà in Y o N formato invece di true/false.

Allo stesso modo è possibile associare il proprio oggetto alla colonna del database. Controllare here per ulteriori dettagli sulla spiegazione.