Java 初始化数据库中的不可变JPA集合
我的域包含FieldValidator对象,这些对象具有子类EmailValidator、SizeValidator等。每个子类只有一个FieldValidator实例Java 初始化数据库中的不可变JPA集合,java,spring,jpa,spring-data-jpa,Java,Spring,Jpa,Spring Data Jpa,我的域包含FieldValidator对象,这些对象具有子类EmailValidator、SizeValidator等。每个子类只有一个FieldValidator实例 @Entity @Immutable @Table(name = "FIELD_VALIDATOR") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "TYPE") public abstract class F
@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
*/
}
@实体
@不变的
@表(name=“FIELD\u VALIDATOR”)
@继承(策略=InheritanceType.SINGLE_表)
@鉴别器列(name=“TYPE”)
公共抽象类FieldValidator扩展AbstractEntity实现IFieldValidator{
@列(unique=true,name=“TYPE”)
公共字符串类型;
公共字符串名称;
公共字符串参数名;
//用子类覆盖
公共摘要可选运行(FieldConstraint);
/**
*省略构造函数、getter和setter
*/
}
示例子类
@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
}
}
@实体
@鉴别器值(“日期前”)
公共类DateBeforeValidator扩展了FieldValidator{
公共DateBeforeValidator(){
超级(“日期”、“之前”);
}
公共可选运行(FieldConstraint){
//待办事项
}
}
示例子类
@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
}
}
@实体
@鉴别器值(“大小\最小值”)
公共类SizeMinValidator扩展了FieldValidator{
公共验证程序(){
超级(“尺寸”、“最小值”);
}
公共可选运行(FieldConstraint){
//待办事项
}
}
如何使用每个FieldValidator子类一个实体初始化FIELD_VALIDATOR表?我需要确保:FIELD_VALIDATOR表是不可变的(不能在表中添加或删除其他数据),每个FieldValidator实体都是唯一的和不可变的(@Column(unique=true)和@immutable注释应该起作用)。我认为最好的选择是JPAs/Hibernates初始加载功能。例如,您可以阅读它。我认为您最好的选择是JPAs/Hibernates初始加载功能。例如,你可以读到它