java - Hibernate mutiple relationships doesn't work -
when create 2 one-to-one relationships in end 1 of 2 saved other 1 becomes null.
in sql trace can see mfuitvoeringjoin saves 2 id's when should saving 3 :s
is there wrong here?
@entity @table(name = "stud1630651.mfuitvoering") public class uitvoering { @id @generatedvalue(strategy=generationtype.auto, generator="my_entity_seq_gen") @sequencegenerator(name="my_entity_seq_gen", sequencename="hibernate_sequence_uitvoering") @column(name = "id") private int id; @column(name = "datum") private string datum; @column(name = "schouwburg") private string schouwburg; @onetoone(cascade=cascadetype.all) @jointable(name="mfuitvoeringjoin",joincolumns= {@joincolumn(name="uitvoeringid")}, inversejoincolumns={@joincolumn(name="dirigentid")}) private dirigent dirigent; @onetoone(cascade=cascadetype.all) @jointable(name="mfuitvoeringjoin",joincolumns= {@joincolumn(name="uitvoeringid")},inversejoincolumns= {@joincolumn(name="muziekstukid")}) private muziekstuk muziekstuk; public uitvoering(string datum, string schouwburg, dirigent dirigent, muziekstuk muziekstuk){ this.datum = datum; this.schouwburg = schouwburg; this.dirigent = dirigent; this.muziekstuk= muziekstuk; } //getters , setters
sql trace:
hibernate: select dirigent0_.id id1_3_0_, dirigent0_.klasse klasse2_3_0_, dirigent0_.land land3_3_0_, dirigent0_.naam naam4_3_0_, dirigent0_.richting richting5_3_0_ stud1630651.mfdirigent dirigent0_ dirigent0_.id=? hibernate: select muziekstuk0_.id id1_5_1_, muziekstuk0_.genre genre2_5_1_, muziekstuk0_.titel titel3_5_1_, muziekstuk0_1_.instrumentid instrume2_0_1_, instrument1_.id id1_4_0_, instrument1_.hoeveelheid hoeveelh2_4_0_, instrument1_.naam naam3_4_0_ stud1630651.mfmuziekstuk muziekstuk0_ left outer join mfmuziekstukjoin muziekstuk0_1_ on muziekstuk0_.id=muziekstuk0_1_.muziekstukid left outer join stud1630651.mfinstrument instrument1_ on muziekstuk0_1_.instrumentid=instrument1_.id muziekstuk0_.id=? hibernate: select hibernate_sequence_uitvoering.nextval dual hibernate: insert stud1630651.mfuitvoering (datum, schouwburg, id) values (?, ?, ?) hibernate: insert mfuitvoeringjoin (muziekstukid, uitvoeringid) values (?, ?)
i think using @onetoone annotation in wrong place.
know one-to-one annotation used when 2 tables have the same primary key
columns.
one-to-one shows record in table a(parrent) there must 1 , 1 record in table b(child).
in database level achieved having foreign key of in b table, when foreign key column(s) in b table is(are) marked primary key of b
.
technically not possible have more 1 one-to-one relation in child table.
in question mfuitvoering
child table have owned primary key called id (field sequence values).
2 foreign keys of mfuitvoeringjoin
in mfuitvoering
representation of manytoone
relationship.
need use @manytoone annotation.
Comments
Post a Comment