Ama*_*har 4 mongodb spring-data spring-data-jpa kotlin spring-data-mongodb
我创建了一个Repository自动递增 id 的方法@Document,但现在我需要显式调用@Idsetter 方法来设置新的 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
}
}
Run Code Online (Sandbox Code Playgroud)
如果我像这样实现我的代码,我需要sequenceRepository.getNextId(...)在保存之前调用每个文档。
在 JPA 中我们可以使用EventListeners像@PrePersist. 是否有spring-data-mongo替代或类似的功能来实现这一目标?
在 Spring data mongo 中提供了事件监听器。例如,您可以扩展AbstractMongoEventListener类并重写以下方法来实现 PrePersist 等效项,
public void onBeforeSave(BeforeSaveEvent<E> event) {
if (LOG.isDebugEnabled()) {
LOG.debug("onBeforeSave({}, {})", event.getSource(), event.getDBObject());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |