当前位置: 首页 > 面试题库 >

如何在JPA中复制Hibernate的saveOrUpdate?

王子明
2023-03-14
问题内容

在JPA中,有什么方法可以复制Hibernate的saveOrUpdate行为,

saveOrUpdate

public void saveOrUpdate(Object object)
                  throws HibernateException

    Either save(Object) or update(Object) the given instance, depending upon resolution of the unsaved-value checks (see the manual for discussion of unsaved-value checking).

    This operation cascades to associated instances if the association is mapped with cascade="save-update".

    Parameters:
        object - a transient or detached instance containing new or updated state 
    Throws:
        HibernateException
    See Also:
        save(Object), update(Object)

它实质上检查数据库中是否已存在该对象,并根据需要更新该对象或保存该对象的新实例。

JPA无事务读取很不错,但是Hibernate确实缺少这种方法。有经验的JPA开发人员如何处理此问题?


问题答案:

尝试使用该EntityManager.merge方法-这非常相似。

Xebia的博客文章中对差异有一个很好的描述:“ JPA实施模式:保存(独立)实体”。



 类似资料:
  • 问题内容: 我想以一种可为我的系统恢复的方式重命名PostgreSQL(9.6)表(使用JPA / Hibernate的Java应用程序) 在我的Java代码中,JPA实体将具有以下注释 ,数据库将具有名为的等效表。 我想将表重命名为,以便可以逐步更新数据库和Java应用程序,从而允许失败和回滚。 典型的步骤是 创建in的副本 确保两种读/写都可用(即,两种方式都复制了数据) 更新Java应用程序

  • 问题内容: 控制器逻辑: 服务逻辑 怎么了 在90%的情况下,这将正常工作。 问题 我已经阅读了相关问题,并找到了上面看到的电话。它解决了大约50%的案件,但不是全部。 问题答案: 对于我们来说,一些不同的方法最终解决了StaleObjectException定期发生的问题: 检索对象后刷新对象解决了我们的大多数StaleObjectExceptions。尤其是在某人可能会从其他地方处理同一对象并

  • 问题内容: 我正在用bootspring学习。 一直工作到我进入内部课程为止。 现在,我可以保存新条目,但不能通过Date检索它们 我需要更改什么? 和 抛出此异常: 问题答案: 您应该在存储库中包括嵌入式密钥类的名称,而不是Long。试试这个(未测试): 之后 是您的,是可嵌入类的属性。还有一件事:如果仅使用嵌入式密钥的一部分,那么就不会期望只有一个结果…

  • 我有一个Person类: 多对多关系是懒惰的。 在我的控制器中 我的XML描述,以备所需。 多谢了。

  • 问题内容: 我有一个使用SchemaUpdate的主要方法,可以在控制台上显示要更改/创建的表,并且在我的Hibernate项目中可以正常工作: 我想在JPA项目中重用此代码,它没有hibernate.cfg.xml文件(也没有.properties文件),但是有一个persistence.xml文件(如JPA规范指定的在META- INF目录中自动检测到) 。 我尝试了这种过于简单的调整, 但由

  • 我正在实现一个基于实体属性值的持久化机制。所有数据库访问都是通过Hibernate完成的。我有一个包含节点路径的表,它非常简单,只有一个id和一个路径(字符串)。路径数量很少,大约几千条。 主表有数百万行,我没有重复路径,而是将路径规范化为它们自己的表。以下是我在插入主表时想要的行为 1)检查路径表中是否存在路径(通过实体管理器查询,使用路径值作为参数) 2) 如果不存在,则插入并获取id(通过实