spring mongodbuuid支持

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

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

@Data // Lombok
public class Role {

    @Id
    private UUID id;

    @Size(max = 18)
    private String name;

}

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

@Configuration
public class DatabaseConfiguration extends AbstractReactiveMongoConfiguration {

    @Override
    protected String getDatabaseName() {
        return "test";
    }

    @Override
    public void configureClientSettings(MongoClientSettings.Builder builder) {
        builder.uuidRepresentation(UuidRepresentation.STANDARD); // <---
    }

}

有没有什么方法可以让它在不创建自定义的情况下工作 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。

相关问题