java - 检查表 hibernate 中是否存在行对象

标签 java hibernate

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

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

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

最佳答案

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

例如,假设您有一个带有 ID、名称和货币的 Country 实体。如果两个国家名称相同,则可以认为它们是平等的。但是,如果您有一个 Person 实体,则可能是他们的姓名、名字、出生日期和出生地点的组合使它们在功能上相等。

继续我的国家示例,这里是执行查询的方法:

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 .

关于java - 检查表 hibernate 中是否存在行对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890051/

相关文章:

hibernate - org.jboss.weld.exceptions.IllegalArgumentException : WELD-001456: Argument resolvedBean must not be null

C# 到 Java 的转换

java - 将 Arraylist 一分为二并使用不同的线程对其进行排序

java - 广播接收器使某些设备中的应用程序崩溃

java - 防止违反 Hibernate 的 UNIQUE 约束

java - Spring Hibernate H2 Junit 测试 - 如何在启动时加载模式

java - HttpServletRequest.getRemotePort() 在同一台机器上收到的每个 http 请求返回不同的端口?

Java - LinkedBlockingQueue问题

java - 使用maven构建geoserver(monitor-hibernate)

Hibernate 继承 - 引用用 @MappedSuperclass 注释的实体