【问题标题】:Spring Data MongoDB identifier as objectSpring Data MongoDB 标识符作为对象
【发布时间】:2020-03-01 21:50:12
【问题描述】:

我有一个 java 类,它作为 id 有一个保存实际 id 值的对象。如何使用 Spring Data MongoDB 进行 id 生成和识别,以及如何定义 MongoDB 存储库?

例子:

@Document
class A {
  @Id
  private B id;

}
class B{
 private String id;
 private String idAppGenerator;
}

由于 Spring 无法为 B 类自动生成值,因此会引发异常。

【问题讨论】:

  • @dassum 抱歉,但这不是一回事。在那个问题中,问题是如何增加。我的更多是如何使用自定义对象作为 id 以及如何在使用 spring 数据存储库中的 find 时进行转换。

标签: java mongodb spring-data-mongodb


【解决方案1】:

找到了解决办法。

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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 2020-08-03
    • 2015-03-23
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2018-04-18
    • 2012-09-25
    • 2016-12-19
    相关资源
    最近更新 更多