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

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

温星华
2023-03-14
问题内容

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

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

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

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


问题答案:

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

是的,如果您使用的是SessionAPI ,则JPA回调将不起作用。

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

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

我对基于Hibernate的解决方案的建议是使用事件(和一个或多个接口)。检查休眠和最后修改日期的示例。



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

  • 问题内容: 我已经使用和事件监听器插入创建日期和表更新的日期。 我面临的问题是,当我将实体保存在数据库中的创建日期无法与在更新记录时插入更新日期相同的表中插入时,它也不会插入更新日期。 我的代码示例如下所示: 侦听器类别: hibernate连接类: DAO中的实体保存和更新方法: 我的测试班: 如果我使用的话,它将插入创建和更新的日期,但是每次我调用flush方法时都会执行更新的查询。目前,我评

  • 问题内容: 有人可以透视一下JPA和Hibernate之间的区别吗?还是将这些互补的概念一起使用? 问题答案: 大致来说,JPA是java社区的一个标准,这里是specs,它是由Hibernate家伙实现(并扩展)的(此处提供一些信息)。作为规范,您将不会直接使用JPA,而是使用JPA实现。 请注意,如果要使用hibernateJPA扩展,将破坏与其他JPA实现的兼容性(尽管有些人会说“为什么要使

  • 问题内容: 有一个结构。我想以这种方式链接这三个实体:公司应包含ID,公司名称和部门列表,每个部门都有一个工人列表,ID和部门名称。每个工人都有名字,身份证。 我试图与一对多和多对一建立联系,但未成功。 公司 部门 工人 我从开始: 它填充公司,但不填充其他表,也没有创建任何联接(映射)错误: 问题答案: 除了Glenn Lane的答案中提到的级联,您还需要了解双向关联是如何工作的。 它们有一个所

  • 问题内容: 如果您正在使用xml映射,那么liquibase是hibernate的 hbm2ddl_auto 属性的完美替代方案。但是我使用的是JPA注释(hibernate注释)。那么可以使用liquibase吗? 问题答案: 是的,Liquibase使用了hibernate的元数据类,无论您使用xml映射还是注释,它们都是相同的。您确实需要一个hibernate配置文件来指向liquibase

  • 问题内容: 在具有两种类型的实体(父级和子级)的场景中: 父母-@OneToMany Collection孩子; 默认设置是对子级集合进行延迟加载。这种模式对少数儿童非常有效,但是如果这个数字很大,这似乎是不可持续的。因此,在某些情况下,我认为孩子的数量会很大,因此我使用了分页的服务方法(例如“ getChildren(父父母,int偏移量,int计数)”)。 问题是:这是处理此类情况的最佳方法吗