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无关