例如,如果我有这样的Java代码:
Transaction tx = session.beginTransaction();
Test test1 = new Test("How many grams in a pound?");
Test test2 = new Test("Which is the biggest continent?");
Test test3 = new Test("Which animal is the fastest?");
session.save(test1);
session.save(test2);
session.save(test3);
tx.commit();
printTests();
tx = session.beginTransaction();
User user1 = new User("Peter");
user1.userTest = test1;
User user2 = new User("John");
user2.userTest = test2;
session.save(user1);
session.save(user2);
tx.commit();
printUsers();
user2.userTest.setText(user2.userTest.getText() + " Answer : Asia is the biggest continent");
tx = session.beginTransaction();
session.save(user2);
tx.commit();
printTests();
printUsers();
我得到了打印结果:
测试:一磅多少克?
测试:哪个大陆最大?
测试:哪种动物最快?
用户:彼得进行了测试:一磅多少克?
用户:John经过测试:哪个是最大的大陆?
测试:一磅多少克?
测试:最大的大陆是哪个?答:亚洲是最大的大陆
测试:哪种动物最快?
用户:彼得进行了测试:一磅多少克?
用户:John进行了测试:哪个最大的大陆?答:亚洲是最大的大陆
但是我不希望更新存储在测试表中的对象。最好是我想要一个用于与用户关联的测试的单独表。因此,我将创建一个包含一些测试的表,另一个可能包含用户测试的更大的表,该表可以由用户更新。如何使用Hibernate实现这一目标?这些是我对User和Test实体的Hibernate配置:
<hibernate-mapping>
<class name="my.hibernate.test.User" table="users">
<id name="id"> <generator class="increment"></generator></id>
<property name="name"></property>
<one-to-one name="userTest" access="field" class="my.hibernate.test.Test"></one-to-one>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="my.hibernate.test.Test" table="tests">
<id name="id"><generator class="increment"></generator></id>
<property name="text"></property>
</class>
</hibernate-mapping>