检查表hibernate中是否存在row-object

时间:2011-05-04 21:24:42

标签: java hibernate

有没有办法检查您尝试保存到表中的实例是否已存在于该表中,但您不知道这样的ID:

MyObject instance = (MyObject) session.get(MyObject.class, new Integer(5));

是否有其他方法可以在不使用ID的情况下检查您的对象是否在数据库中?

1 个答案:

答案 0 :(得分:3)

您必须首先根据属性确定何时考虑两个MyObject实例相等,然后执行查询。

例如,假设您有一个国家/地区实体,其中包含ID,名称和货币。如果两个国家的名称相同,则可视为两个国家。但是如果你有一个Person实体,它可能是他们的名字,firstName,出生日期和出生地的组合,使它们在功能上相等。

要继续我的国家/地区示例,以下是执行查询的方法:

String hql = "select Country c where c.name = :theName";
Query q = session.createQuery(hql);
q.setString("theName", theCountryIWantToSave.getName());
Country c = query.uniqueResult();
if (c != null) {
    // a country with the same name as theCountryIWantToSave already exists
}

这是非常基本的东西,真的。您应该阅读Hibernate user guide