2015-03-18 12 views
6

Vom official hibernate documentation:Verständnis Hibernate Annotations @Type

@ org.hibernate.annotations.Type überschreibt der Standard-Hibernate Typ verwendet: dies in der Regel nicht notwendig ist, da der Typ richtig von Hibernate geschlossen ist

ein Beispiel aus der Dokumentation ist:

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

Das verstehe ich nicht. Wir deklarieren @Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType"), aber der Rückgabewert der Methode hat den Typ MonetaryAmount.

Ich erwartete, dass der Typ innerhalb der Typ Annotation und der Typ des zurückgegebenen Werts den gleichen Typ sein sollte.

Konnte nicht jemand die tatsächlichen Zwecke des Typs, erklärt innerhalb der @Type Annotation erklären. Warum unterscheidet es sich vom zurückgegebenen Typ?

+0

Vielleicht wird dies von Nutzen sein. http://stackoverflow.com/questions/9533935/how-to-force-hibernate-to-return-dates-as-java-util-date-instead-of-timestamp – Scruffy

Antwort

8

Es gibt einen Unterschied zwischen Rückgabetyp und @Type.

@Type Annotation ist für den Winterschlaf, d. H. Um zu bestimmen, welche Art von Daten Sie in der Datenbank speichern möchten.

Lassen Sie uns ein einfaches Beispiel:

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

Hier Rückgabetyp ist boolean aber der Wert, der in der Datenbank gespeichert erhalten anstelle von true/false in Y oder N-Format vorliegen.

Auf die gleiche Weise können Sie Ihr Objekt Datenbankspalte zuordnen. Weitere Informationen finden Sie unter here.

Verwandte Themen