Mongodb @spring data mongo的PrePersist EventListener替代方案
我创建了一个Mongodb @spring data mongo的PrePersist EventListener替代方案,mongodb,spring-data,kotlin,spring-data-jpa,spring-data-mongodb,Mongodb,Spring Data,Kotlin,Spring Data Jpa,Spring Data Mongodb,我创建了一个存储库来自动增加@Document的id,但是现在我需要显式调用@idsetter方法来设置新id。 有没有一种方法可以像JPA@PrePersist @Repository interface UserRepository : MongoRepository<User, Long>, UserRepositoryCustom interface UserRepositoryCustom { fun save(user: User): User } class
存储库来自动增加@Document
的id,但是现在我需要显式调用@id
setter方法来设置新id。
有没有一种方法可以像JPA@PrePersist
@Repository
interface UserRepository : MongoRepository<User, Long>, UserRepositoryCustom
interface UserRepositoryCustom {
fun save(user: User): User
}
class UserRepositoryImpl(private val mongoOperations: MongoOperations, private val sequenceRepository: SequenceRepository) : UserRepositoryCustom {
override fun save(user: User): User {
// need to call this line for every @Document
user.id = sequenceRepository.getNextId(User.SEQUENCE_KEY)
mongoOperations.insert(user)
return user
}
}
@存储库
接口UserRepository:MongoRepository、UserRepositoryCustom
接口UserRepositoryCustom{
乐趣保存(用户:用户):用户
}
类UserRepositoryImpl(private val mongoOperations:mongoOperations,private val sequenceRepository:sequenceRepository):UserRepositoryCustom{
覆盖乐趣保存(用户:用户):用户{
//需要为每个@文档调用此行
user.id=sequenceRepository.getNextId(user.SEQUENCE\u键)
mongoOperations.insert(用户)
返回用户
}
}
如果我像这样实现代码,我需要在保存每个文档之前,为每个文档调用sequenceRepository.getNextId(…)
在JPA中,我们可以像@PrePersist
一样使用EventListeners
。是否有类似于spring data mongo的替代功能或类似功能来实现此功能?在spring data mongo中提供事件监听器。例如,您可以扩展AbstractMongoEventListener
类,并重写下面的方法以实现PrePersist等效项
public void onBeforeSave(BeforeSaveEvent<E> event) {
if (LOG.isDebugEnabled()) {
LOG.debug("onBeforeSave({}, {})", event.getSource(), event.getDBObject());
}
}
public void onBeforeSave(beforesavevent事件){
if(LOG.isDebugEnabled()){
LOG.debug(“onBeforeSave({},{})”,event.getSource(),event.getDBObject();
}
}
您是否使用了自动增量?为了持久性,您需要使用onbeforecovert