Il @Embeddable
di annotazione consente di specificare una classe le cui istanze sono memorizzati come parte intrinseca del soggetto possessore. Questa annotazione ha senza attributi.
@Embeddable
public class EmploymentPeriod {
java.util.Date startDate;
java.util.Date endDate;
...
}
Il @Embedded
annotazione viene utilizzato per specificare un campo persistente o di proprietà di un ente il cui valore è un'istanza di una classe integrabile. Per impostazione predefinita, le definizioni delle colonne specificati nella classe @Embeddable
applicano al tavolo della all'entità proprietaria ma si possono ignorare le utilizzando @AttributeOverride
:
@Embedded
@AttributeOverrides({
@AttributeOverride(name="startDate", [email protected](name="EMP_START")),
@AttributeOverride(name="endDate", [email protected](name="EMP_END"))
})
public EmploymentPeriod getEmploymentPeriod() { ... }
Per quanto riguarda la @Basic
annotazioni opzionale, è possibile utilizzare per configurare il tipo di recupero su LAZY
e per configurare il mapping per non consentire valori null (per tipi non primitivi) con l'attributo optional
.
@Basic(fetch=LAZY)
protected String getName() { return name; }
È inoltre possibile posizionarlo su un campo o proprietà per contrassegnarlo esplicitamente come permanente (a scopo di documentazione).
fonte
2010-04-05 13:52:31
Q1. Se i campi o le proprietà dei tipi incorporabili sono persistenti defualt, allora perché dobbiamo aggiungere l'annotazione '@ Embedded'? Q2. Posso usare l'annotazione '@ AttributeOverrides' senza l'annotazione' @ Embedded'? Potresti per favore gettare un po 'di luce su '@ Basic'? –
Q1. Perché @ Embedded consente di ignorare le definizioni di colonna Q2. No, non la penso così C'è un buon esempio che illustra questo qui: http://www.redhat.com/docs/en-US/JBoss_Enterprise_Web_Platform/5.0.0/html/Hibernate_Annotations_Reference_Guide/ch02s02s02s03.html –
@Pascal Cosa succede se non ci sono sostituzioni? Qual è lo scopo di '@ Embedded'? Può essere lasciato fuori? –