![](/img/trans.png)
[英]A different object with the same identifier using Spring data jpa with Hibernate
[英]Spring Data MongoDB identifier as object
我有一个 java class 作为 id 有一个 object 保存实际 id 值。 如何使用 Spring 数据 MongoDB 进行 id 生成和识别,以及如何定义 MongoDB 存储库?
例子:
@Document
class A {
@Id
private B id;
}
class B{
private String id;
private String idAppGenerator;
}
由于 Spring 无法为 B class 自动生成值,这会引发异常。
找到了解决方案。
Spring 数据存储库的创建方式如下:
@Repository
public interface ARepository extends MongoRepository<A, B>{
//B is the object identity
}
为了自动生成 B 的值,需要创建一个事件:
Component
public class IdentifierListener extends AbstractMongoEventListener<A> {
@Override
public void onBeforeConvert(BeforeConvertEvent<A> event){
if(event.getSource().getId() == null){
B id = new B();
id.setId(new ObjectId());
event.getSource().setId(id);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.