当前位置: 首页 > 知识库问答 >
问题:

sping-boot-starter-data-mongob似乎不包含使用@PrePersist@PreUpdate的持久性API

顾俊楚
2023-03-14

使用sping-boot-starter-data-mongob时,包含和使用JPA实体生命周期事件的正确方法是什么?

我的pom。xml依赖项

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

我的类路径没有看到以下任何JPA注释:

@PrePersist
@PostPersist
@PreRemove
@PostRemove
@PreUpdate
@PostUpdate
@PostLoad

共有1个答案

牛智志
2023-03-14

Mongo有自己的事件记录在@#Entity回调中。

例子:

class DefaultingEntityCallback implements BeforeSaveCallback<Person>, Ordered {      

    @Override
    public Object onBeforeSave(Person entity, String collection) {                   

        if(collection == "user") {
            return // ...
        }

        return // ...
    }

    @Override
    public int getOrder() {
        return 100;                                                                  
    }
}

提供以下功能接口

> < Li > < p > org . spring framework . data . MongoDB . core . mapping . event . afterconvertcallback

org.springframework.data.mongodb.core.mapping.event.AfterSave回调

org . spring framework . data . MongoDB . core . mapping . event . beforecovertcallback

org.springframework.data.mongodb.core.mapping.event.之前保存回调

org . spring framework . data . MongoDB . core . mapping . event . reactiveafterconvertcallback

org.springframework.data.mongodb.core.mapping.event.ReactiveAfterSaveCallback

org.springframework.data.mongodb.core.mapping.event.ReactiveBeforeConvertCallback

org.springframework.data.mongodb.core.mapping.event.ReactiveBeforeSaveCallback

 类似资料:
  • 问题内容: 我在StackOverflow上遇到了类似的问题,尝试了解决方案,但没有找到答案。 我正在使用一种相当通用的JPA策略来设置某些实体的上次修改时间。设置列和字段,然后使用标记方法,并将其设置为等于当前时间。 问题是,我可以在调试器中看到正在调用该方法并且该字段正在更新,但是在我的数据库日志中,我仅看到一个SQL调用,以UPDATE更改字段,其中不包含timestamp字段的UPDATE

  • 我有带有嵌套文档注释的帖子集合。简单的文档模式如下所示: 我只想投射所要求的评论。我找到了一个可以接受的解决方案。(也只欢迎使用注释对象返回解决方案) 然后我尝试将其应用于带有查询注释的mongoDB存储库接口。 但我得到了演员特例。有没有更好的方法来使用spring data mongodb实现这一点?

  • 问题内容: 以下是对问题的后续问题: 我正在使用version 。如果所有成员变量都是基本类型,即使使用和注释,参数的名称与成员变量的名称不完全匹配,我也可以保留该对象。 但是,当我尝试保留包含其他对象的对象时,我得到了提示。我的问题: 这是错误,还是我做错了什么? 为了使我可以正确地持久化包含对象的对象,需要进行哪些更改? 。 我和班级如下: 更新:奇怪的是,将注释中的字符串更改为“属性”以外的

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

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

  • 我正在实施一个项目与rest web service和mongoDB,我将是有用的使用JPA数据库操作。当然,我需要使用Hibernate?,这将是其他一些较轻的框架的最佳选择。数据库是小的几个实体,但许多记录,如果可能的话还会插入图像,如果OpenShift允许的话。在这种情况下,最好用作框架持久性?