@PersistenceCreator注解有什么用

问题描述 投票:0回答:1

我有一个 User.java 类,它是 User 集合的模型。 我想将其中的一些字段设置为私有最终字段,但是当我这样做时,它显示错误“最终字段可能尚未初始化”,但由于我期望这些字段由 UserRepository 初始化,所以我无法初始化这些字段在申报时。


我尝试创建一个包含所有字段的构造函数,它可以工作(不使用 @PersistenceCreator),然后还有一个 @PersistenceCreator 注释,我不知道其用途,根据文档,它声明带注释的构造函数为默认构造函数,但有没有进一步的解释。 请注意,构造函数可以使用或不使用注释。


请解释: @PersistenceCreator注解有什么用。

@Document
public class User {
    @Id
    private final int id;
    @Field("user_name")
    private final String userName;
    private final String password;
    private final boolean active;
    private final String roles;
    @Field("from_phone_number_id")
    private final String fromPhoneNumberId;
    @Field("access_token")
    private final String accessToken;

    
    @PersistenceCreator
    public User(int id, String userName, String password, boolean active, String roles, String fromPhoneNumberId,
            String accessToken) {
        this.id = id;
        this.userName = userName;
        this.password = password;
        this.active = active;
        this.roles = roles;
        this.fromPhoneNumberId = fromPhoneNumberId;
        this.accessToken = accessToken;
    }
}
java spring mongodb spring-data-mongodb mongorepository
1个回答
3
投票

Spring Data自动尝试检测持久实体的构造函数,用于具体化该类型的对象,如果有一个用

@PersistenceCreator
注释的静态工厂方法,则使用它。

这是文档

© www.soinside.com 2019 - 2024. All rights reserved.