使用@ManyToOne注释播放框架对 jpa 实体应用@Required约束



我在将验证约束应用于类属性时遇到问题例如,我有类:

        @Entity
        public class user   {
            @Id
            @GeneratedValue(strategy=GenerationType.AUTO)
            public int id;
            @Required
            public String name;
            @ManyToOne(cascade = CascadeType.MERGE)
            @Required
            public Company company;
        }

当我@Required应用于参数时:名称它有效。但是当我为参数添加注释@ManyToOne时:公司不再工作。当我删除@ManyToOne注释时,它会再次工作。请帮助我。

公司类别:

@Entity 
public class Company {
  @Id
  @Constraints.Required
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  public Long id;
  @Constraints.Required
  public String name;
  @Constraints.Required
  public String date;
}

由于您使用的是@ManyToOne因此您可以获得数据库验证,以便公司字段不可为空。如果您使用

@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name="company", nullable=false, optional=false)
public Company company;

@Required检查客户端验证。因此,您可以创建一个方法来处理验证。这是等价的。

public String validate() {
   if(company == null) {
       return "Company Field Cannot be Empty";
   }
   return null;
}

最新更新