休眠一对一指定单独的表

时间:2018-10-10 08:31:03

标签: java hibernate

例如,如果我有这样的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>

0 个答案:

没有答案