我的域包含FieldValidator对象,这些对象具有子类EmailValidator,SizeValidator等。每个子类只有一个FieldValidator实例。

@Entity
@Immutable
@Table(name = "FIELD_VALIDATOR")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE")
public abstract class FieldValidator extends AbstractEntity implements IFieldValidator{

    @Column(unique=true, name="TYPE")
    public String type;

    public String name;
    public String argumentName;

    //To override by subclasses
    public abstract Optional<CustomError> run(FieldConstraint constraint);

    /**
    * Constructor, getters and setters omitted
    */
}


示例子类

@Entity
@DiscriminatorValue("DATE_BEFORE")
public class DateBeforeValidator extends FieldValidator {
    public DateBeforeValidator() {
        super("Date", "Before");
    }

    public Optional<CustomError> run(FieldConstraint constraint) {
        //TODO
    }
}


示例子类

@Entity
@DiscriminatorValue("SIZE_MIN")
public class SizeMinValidator extends FieldValidator {

    public SizeMinValidator() {
        super("Size", "Minimum");
    }

    public Optional<CustomError> run(FieldConstraint constraint) {
        //TODO
    }
}


如何为每个FieldValidator子类一个实体初始化FIELD_VALIDATOR表?我需要确保:FIELD_VALIDATOR表是不可变的(不能向该表添加或删除其他数据),每个FieldValidator实体都是唯一且不可变的(@Column(unique = true)和@Immutable批注应特技)。

最佳答案

我认为您最好的选择是JPA / Hibernates初始加载功能。例如,您可以阅读here

关于java - 在数据库中初始化不可变的JPA集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58986223/

10-12 04:06