我的域包含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/