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

问题描述 投票:0回答:2

我想消除我收到的数据中的重复(我将数据转换为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);
            }

谢谢。

java mysql hibernate orm
2个回答
1
投票
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);
}

1
投票

如果你看一下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);
}
© www.soinside.com 2019 - 2024. All rights reserved.