将表上的现有条目转换为Hibernate实体对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将表上的现有条目转换为Hibernate实体对象相关的知识,希望对你有一定的参考价值。

我想消除我收到的数据中的重复(我将数据转换为Objects(Company.java)并通过Hibernate将它们存储在表中)。

每当有新数据进入时,我想通过查询检查所有条目。在这种情况下,我使用uniquiResult()方法来检查数据是否已经在表中。

然后,如果数据不存在,则使用数据创建新的Company对象,并将Company对象保存到会话中。

但是,如果数据已存在,如何获取现有条目并将其转换为对象?

我的代码如下:

            Company company;
            if(session
                    .createQuery("from company where company_name=:placeholder")
                    .setParameter("placeholder", data.getCompanyName())
                    .uniqueResult()
                    !=null){
                company = ????;
            } else {
                company = new Company(data.getCompanyName());
                session.save(company);
            }

谢谢。

答案
Company company = session
                    .createQuery("from company where company_name=:placeholder")
                    .setParameter("placeholder", data.getCompanyName())
                    .uniqueResult();


if(company == null) {
    company = new Company(data.getCompanyName());
    session.save(company);
}
另一答案

如果你看一下Hibernate Session对象的文档

 Object uniqueResult() 
      Convenience method to return a single instance that matches the query, or null if the query returns no results.

即它执行您的查询,从数据库中获取记录并将其转换为对象。

您要查找的代码是:

Company company = session.createQuery("from company where company_name=:placeholder")
                .setParameter("placeholder", data.getCompanyName())
                .uniqueResult()
                !=null;
if(company == null) {
  company = new Company(data.getCompanyName());
  session.save(company);
}

以上是关于将表上的现有条目转换为Hibernate实体对象的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate学习 ——ORM

序列不在 oracle 表上的一行中

hibernate sql查询后对象转换成实体类

CRUD 使用 Hibernate 但没有任何实体

如何将字符串对象(包含 XML)“转换”为现有 JSP 页面上的元素

如何避免 Hibernate ValidationException 上的自动实体更新