Dobry den,
JPA je postavene na myslienke 'configure by exception - smart defaults',
preto si myslim ze referenceColumnName v @JoinColumn je zbytocne.
Mne sa spravne generuje DDL schema - aj PK aj constrainty. Pouzivam
hibernate aj toplink a GenerationType mam TABLE.
Myslim si ze toplink essentials ide viacej podla specifikacie, ale
hibernate DDL schema generuje spravnejsie. Takze by som na vasom mieste
skusil aj vymenit vendora.
Martin Krajci
Jiří Mikulášek wrote:
Hezký den, zdá se mi že JPA v určitém případě chybně generuje DDL, což vede k
řetězovým chybám a nevytvoření spousty constraintů. Pokud se mýlím opravte mě
(kéž bych se mýlil).
Takže příklad:
Entita:
@Entity
public class FieldNotes implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne(optional=false)
@JoinColumn(name="ID_SPECIES",referencedColumnName="ID",nullable=false)
private Species species;
@ManyToOne(optional=false)
@JoinColumn(name="ID_LOCALITY",referencedColumnName="ID",nullable=false)
private Locality locality;
a DDL:
CREATE TABLE FIELDNOTES (
ID BIGINT NOT NULL, DTYPE VARCHAR(31),
ID_LOCALITY BIGINT NOT NULL,
ID_SPECIES BIGINT NOT NULL,
PRIMARY KEY (ID, ID_SPECIES)
)
No teď mě zajímá, jaktože se ID_SPECIES stalo součástí PK a ID_LOCALITY
nikoliv. Samozřejmě správně nemaá být v PK ani jedno. Snažím se na to přijít
už dlouho, nakonec jsem si to ve schímatu upravil ručně, což ale není
řešením, v případě že někdo bude chtít z mých entit schéma vygenerovat tak se
mu to nepodaří, protože všechny vazby na FIELDNOTES podle ID neprojdou.
jako persistence providera používám toplink
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________