Private static void test10 () {// get session object sessionfactory sessionfactory = new configuration (). Configure (). Buildsessionfactory (); Session session = sessionfactory.opensession ();// session open transaction session.begintransaction ();// Create One-to-one object Data personinfo personinfo = new personinfo ();p ersoninfo.setperage (" Perage "); One2one one2one = new one2one (); One2one.settest2 (" One2One ");// one2one The primary key value comes from the primary key value of the external personinfo and as the foreign key of the personinfo primary key// to the personinfo setting one2one data not set Save personinfo do not create one2one Records Personinfo.setone2one (one2one);// settings one2one Personinfo Data,one2one Primary key value Get settings from personinfo object One2one.setpersoninfo (personinfo);// Save Personinfo Object If settings member variable one2one value Inserts a record into the one2one table otherwise// Insert only personinfo table one record Session.save (personinfo);// refresh Sessionsession.flush ();// close transaction session.gettransaction (). commit ();}
Run results
Hibernate:insert into Personinfo (Pername, Persex, Perage, Perphone, peraddress, Perjob, Perentrytime, Perdeparturetime, Percreatedate, Perlastmodifydate, Perid) VALUES (?,?,?,?,?,?,?,?,?,?,?)
Hibernate:insert into One2One (Test1, Test2, test3, test4) VALUES (?,?,?,?)
Because it is a bidirectional association, both sides of the XML configuration <one-to-one> can be arbitrarily replaced. Any class can be mapped as a primary table and another table
Personinfo
<one-to-one name= "One2One" class= "Com.yjm.pojo.person.One2One" fetch= "join" cascade= "all" ></one-to-one >
One2One
<id name= "test4" type= "java.lang.String" ><generator class= "foreign" ><param name= "Property" > Personinfo</param></generator></id><one-to-one name= "PersonInfo" ></one-to-one>
A two-way, one-to-one data retention problem in hibernate