spring mongodbuuid支持

bt1cpqcv  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(403)

我想用 UUID 而不是平原 String 带注解的字段的值 @Id ,例如:

  1. @Data // Lombok
  2. public class Role {
  3. @Id
  4. private UUID id;
  5. @Size(max = 18)
  6. private String name;
  7. }

但是,插入这样的对象会导致 Cannot autogenerate id of type java.util.UUID for entity of type Role 例外。
作为参考,我尝试了以下自定义配置,但没有成功:

  1. @Configuration
  2. public class DatabaseConfiguration extends AbstractReactiveMongoConfiguration {
  3. @Override
  4. protected String getDatabaseName() {
  5. return "test";
  6. }
  7. @Override
  8. public void configureClientSettings(MongoClientSettings.Builder builder) {
  9. builder.uuidRepresentation(UuidRepresentation.STANDARD); // <---
  10. }
  11. }

有没有什么方法可以让它在不创建自定义的情况下工作 AbstractMongoEventListener 每个模型(为基类创建一个也不起作用)?

voj3qocg

voj3qocg1#

目前,在SpringDataMongoDB2.0、1.10.1和1.9.8之前,不能直接生成objectid、string或biginteger以外的数据类型的ID。
有关详细信息,请参阅:https://craftingjava.com/blog/custom-document-id-spring-data-mongodb/
作为解决方法的额外考虑 CustomMongoRepositoryImpl ,您可以创建一个自定义方面注解作为所有存储库的通用装载点,并且在该方面中,您可以拥有客户机id类型和生成器之间的Map。

相关问题