【问题标题】:Can we map only a few table columns with java pojo using hibernate我们可以使用hibernate只用java pojo映射几个表列吗
【发布时间】:2014-01-09 11:29:49
【问题描述】:

在java中使用hibernate,我们是否需要将所有java pojo字段映射到Database表列?或者我们可以只映射几个字段和几列?

【问题讨论】:

    标签: java hibernate pojo


    【解决方案1】:

    是的,您可以将 Pojo 类的几个字段映射到表格列。不是问题。它将成功地将数据存储在数据库中。

    例子:

    下面是StudentData Pojo

    public class StudentData1 {
        private String name;
        private int id;
        private String name1;
        //setters & getters
    }
    

    还有HBM文件:

    <class name="example.StudentData" table="StudentData"> 
        <id name="id" column="pid"  >
            <generator class="assigned" />
        </id> 
        <property name="name" column="pname" /> 
    </class>
    

    CFG文件是

    <mapping resource="StudentData.hbm.xml"/>
    

    主类是

     public static void main(String[] args) {
        SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
        Session session = factory.openSession();
        StudentData1 s = new StudentData1();
        s.setId(1);
        s.setName("iPhone");
        Transaction tx = session.beginTransaction();
        session.save(s);
        System.out.println("Object saved successfully.....!!");
        tx.commit();
        session.close();
        factory.close();
    }
    

    你可以运行这段代码,它只会执行和存储两个字段。

    【讨论】:

    • 所以它的意思是,我们在 hbm 文件中所做的 whateva 映射,只有那些字段和列会在事务中发生.. 好.. 有意义.. 谢谢你 :)
    • @KP_JavaDev 欢迎。如果此答案对您有用,请将其设为正确答案,对其他人也会有所帮助。
    • 是的,谢谢。这个答案很有帮助:) :)
    【解决方案2】:

    我假设您只想在数据库中保留类字段的子集。 您可以使用@Transient 注释以标记您不希望保留的字段。

    警告:请务必注意这些字段可能未初始化(因为它们在加载时在数据库中没有值)

    【讨论】:

      【解决方案3】:

      我没有检查它,但我不明白为什么不能保留一些未映射的字段,尤其是如果它们不作为表中的列存在。 当然,在某些情况下,您需要将列映射到字段,例如当列不能为空时,保存时会出现异常。

      【讨论】:

        【解决方案4】:

        在休眠中,如果没有以任何其他方式描述,所有字段都将被映射。因此,人们可以指向 ORM 映射器,而不是使用

        将给定字段映射到数据库
         [@Transient][1] annotation in case JPA is used
         or even the **transient** keyword from java - careful when using this one, it will prevent the given field to be serialized 
        

        【讨论】:

          猜你喜欢
          • 2016-01-15
          • 2020-03-15
          • 2021-04-08
          • 1970-01-01
          • 1970-01-01
          • 2014-08-14
          • 1970-01-01
          • 2021-05-16
          • 1970-01-01
          相关资源
          最近更新 更多