Java Spring MongoDB UUID支持

Java Spring MongoDB UUID支持,java,mongodb,spring-boot,uuid,spring-mongodb,Java,Mongodb,Spring Boot,Uuid,Spring Mongodb,我想对带有@Id注释的字段使用UUID而不是普通字符串值,例如: @Data // Lombok public class Role { @Id private UUID id; @Size(max = 18) private String name; } 但是,插入此类对象会导致无法为类型为Role exception的实体自动生成类型为java.util.UUID的id 作为参考,我尝试了以下自定义配置,但没有成功: @Configuration pu

我想对带有@Id注释的字段使用UUID而不是普通字符串值,例如:

@Data // Lombok
public class Role {

    @Id
    private UUID id;

    @Size(max = 18)
    private String name;

}
但是,插入此类对象会导致无法为类型为Role exception的实体自动生成类型为java.util.UUID的id

作为参考,我尝试了以下自定义配置,但没有成功:

@Configuration
public class DatabaseConfiguration extends AbstractReactiveMongoConfiguration {

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

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

是否有任何方法可以让它在不为每个模型创建自定义抽象MongoEventListener的情况下工作?为基类创建一个也不起作用?

目前,在Spring data MongoDB 2.0、1.10.1和1.9.8之前,无法直接生成ObjectId、String或BigInteger以外的数据类型ID

有关更多详细信息,请参阅:


作为CustomMongoPositoryImpl解决方案的额外考虑,您可以创建自定义方面注释作为所有存储库的通用装载点,并且在该方面中,您可以在客户端id类型和生成器之间进行映射。

该链接中建议的解决方案使用AbstractMongoEventListener,这是违反我所寻找的,正如我在文章中所说的。我打算用CuutManggRePosiTryRyPyt来解决这个问题。这个解决方案是针对旧版本的,甚至比创建多个ActudiMangGeEvistListor更糟糕。