Java JPA-对映射大小的约束
我可以对实体中地图的大小进行限制吗?我想确保它至少包含一个非空值Java JPA-对映射大小的约束,java,dictionary,jpa,constraints,Java,Dictionary,Jpa,Constraints,我可以对实体中地图的大小进行限制吗?我想确保它至少包含一个非空值 @Entity public class Product { @Id @GeneratedValue private UUID id; // TODO names should contain at least one non-null value @ElementCollection @MapKeyColumn(name="lan", length=2) @Column
@Entity
public class Product {
@Id
@GeneratedValue
private UUID id;
// TODO names should contain at least one non-null value
@ElementCollection
@MapKeyColumn(name="lan", length=2)
@Column(name="name")
Map<String,String> names;
protected Product() {}
public Product(Map<String, String> names) {
this.names = names;
}
}
@实体
公共类产品{
@身份证
@生成值
私有UUID;
//TODO名称应至少包含一个非空值
@元素集合
@MapKeyColumn(name=“lan”,长度=2)
@列(name=“name”)
地图名称;
受保护产品(){}
公共产品(地图名称){
this.names=名称;
}
}
对于这种情况,我倾向于推荐Hibernate Validator。它由大多数JPA提供者自动运行,注释提供了一种简洁的方法来验证这两种简单的情况,并实现更复杂的逻辑
@Entity
public class Product {
@Id
@GeneratedValue
private UUID id;
// TODO names should contain at least one non-null value
@ElementCollection
@MapKeyColumn(name="lan", length=2)
@Column(name="name")
@Size(min=1) // <- This is all that's needed to implement what you're asking
@NotEmpty // Also implies not-null - for >= 1, this line alone is sufficient
Map<String,String> names;
protected Product() {}
public Product(Map<String, String> names) {
this.names = names;
}
}
@实体
公共类产品{
@身份证
@生成值
私有UUID;
//TODO名称应至少包含一个非空值
@元素集合
@MapKeyColumn(name=“lan”,长度=2)
@列(name=“name”)
@尺寸(最小值=1)/=1,仅此线就足够了
地图名称;
受保护产品(){}
公共产品(地图名称){
this.names=名称;
}
}
对于这种情况,我倾向于推荐Hibernate Validator。它由大多数JPA提供者自动运行,注释提供了一种简洁的方法来验证这两种简单的情况,并实现更复杂的逻辑
@Entity
public class Product {
@Id
@GeneratedValue
private UUID id;
// TODO names should contain at least one non-null value
@ElementCollection
@MapKeyColumn(name="lan", length=2)
@Column(name="name")
@Size(min=1) // <- This is all that's needed to implement what you're asking
@NotEmpty // Also implies not-null - for >= 1, this line alone is sufficient
Map<String,String> names;
protected Product() {}
public Product(Map<String, String> names) {
this.names = names;
}
}
@实体
公共类产品{
@身份证
@生成值
私有UUID;
//TODO名称应至少包含一个非空值
@元素集合
@MapKeyColumn(name=“lan”,长度=2)
@列(name=“name”)
@尺寸(最小值=1)/=1,仅此线就足够了
地图名称;
受保护产品(){}
公共产品(地图名称){
this.names=名称;
}
}
您指的是bean验证API。搜索它。与JPAYou无关您指的是bean验证API。搜索它。与JPA无关