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

Hibernate/ JPA中的@PreUpdate和@Prepersist(使用会话)

巫马修为
2023-03-14
问题内容

我已经打了一个拦截器将修复到现有project.the主要问题是,我一定会喜欢使用@Prepersist,并@PreUpdatePOJO照顾LastModified使用Hibernate实现JPA与会议现场(INSERT和UPDATE)。

原因? :需要进行此更改,因为有必要使用,liquibase 1.9.5而且我知道(因为我之前已经遇到过),liquibase使用默认的current_timestamp将时间戳转换为datetime,对于MySQL数据库来说太糟糕了。

所以我需要一种在代码中而不是在数据库中进行设置的方法,这样我就可以安全地将timestamp字段更改为datetime。然后,liquibase很高兴,我很高兴。

现在似乎这些解释器没有被执行,经过很少的搜索,我发现它适合使用entityManager。这目前是没有问题的,所以我想知道是否有解决我的问题的
简单 方法,这意味着使用@Prepersistor
@PreUpdate或or甚至其他解决方法来设置lastModified字段仍使用会话


问题答案:

现在看来这些解释器尚未执行,经过很少的搜索,我发现使用entityManager是合适的。

是的,如果您使用的是Sesshtml" target="_blank">ionAPI ,则JPA回调将不起作用。

因此,我想知道是否有解决问题的简单方法,这意味着可以使用@PrePersist或@PreUpdate或其他解决方法来设置lastModified字段仍在使用会话

据我所知,周围有没有简单的方法(如果你使用Spring, MAYBE
看看这个帖子虽然)。

我对基于Hibernate的解决方案的建议是使用事件(和一个或多个接口)。查看hibernate和上次修改日期的示例。



 类似资料:
  • 问题内容: 我已经打了一个拦截器将修复到现有project.the主要问题是,我一定会喜欢使用,并在照顾使用Hibernate实现JPA与会议现场(INSERT和UPDATE)。 原因? :需要进行此更改,因为有必要使用,而且我知道(因为我之前已经面对过),liquibase使用默认的current_timestamp将时间戳转换为日期时间,这对于mysql数据库来说太糟糕了。 所以我需要一种在代

  • 问题内容: 在我的应用程序中,我定义了以下类: 如果我尝试将新帖子添加到论坛实体,则数据库将通过回调正确更新字段。但是,如果我尝试使用以下代码更新发布实体: 仅帖子数据被更新,字段值不变。我认为方法应该有效,并更新论坛实体。这是错误还是我错过了什么? 问题答案: 这不是错误,即使快速尝试也可以达到您预期的效果。不利的消息是由于以下原因,不能保证它能正常工作: 从JPA 2.0规范的第93页: 通常

  • 假设以下代码段使用@PrePersist和@PreUpdate注释并连接了类型继承: 问题:我们可以依赖回调方法的任何执行顺序吗? 例如,当持久化类A和B时,B中的prePersist方法会在A中的prePersist方法之前执行还是在A中的prePersist方法之前执行? 我们可以假设B中的prePersist将在类A被持久化之前执行吗?

  • 我知道SpringDataJPA使用Hibernate,但是,我有一些问题需要澄清。 > 与使用hibernate会话和HQL相比,使用@Query编写自定义查询有哪些优势? 使用SpringDataJParepository查询方法和使用HibernateHQL之间有什么性能差异吗? 我在这里看到了其他类似的问题,他们没有回答这些问题。

  • 我似乎无法让我的Spring JPA配置正常工作。我有一个Spring REST服务。如果我将所有实体设置为FetchType.EAGER,一切都按预期工作。但是我不想这样做,原因很明显。 当我将实体设置为FetchType时。懒惰,我得到以下错误: org.hibernate.LazyInitializationException:未能懒惰地初始化角色集合:com.service.entitie

  • 使用sping-boot-starter-data-mongob时,包含和使用的正确方法是什么? 我的pom。xml依赖项 我的类路径没有看到以下任何JPA注释: