2015-12-02 261 views
2

与dropwizard工作和休眠 例外,当我尝试做一个坚持是休眠要求javax.validation.constraints.Size,枚举

没有验证可以为约束 “javax.validation.constraints找到.Size'验证类型 'enums.ServiceType'。检查 '型' 配置

代码如下:

@Table(name = "transactions", 
     indexes = { 
       @Index(name = "references_index", columnList = "reference_id") 
     } 
) 

public class Transaction { 

    @JsonIgnore 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id") 
    private long id; 

    @NonNull 
    @NotEmpty 
    @Column(name = "reference_id", unique = true) 
    private String referenceId; 

    @NonNull 
    @NotEmpty 
    @Column(name = "state") 
    private String state; 

    @NonNull 
    @Column(name = "type") 
    @Enumerated(EnumType.STRING) 
    private ServiceType type; 

    @NonNull 
    @NotEmpty 
    @Column(name = "provider") 
    private String provider; 

    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name = "created_date", insertable = false, updatable = false) 
    private Date createdTimeStamp; 

    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name = "last_updated", insertable = false, updatable = true) 
    private Date updatedTimeStamp; 

    public Transaction(String referenceId, String state, ServiceType type, String provider) { 
     this.referenceId = referenceId; 
     this.state = state; 
     this.type = type; 
     this.provider = provider; 
    } 

} 

其中

public enum ServiceType { 
    TYPEA, TYPEB, TYPEC 
} 

做的DAO

class TransactionDAO extends AbstractDAO<Transaction> { 
    /** 
    * Creates a new DAO with a given session provider. 
    * 
    * @param sessionFactory a session provider 
    */ 
    public TransactionDAO(SessionFactory sessionFactory) { 
     super(sessionFactory); 
    } 

     protected Transaction persistTransaction(Transaction transaction) { 
     return persist(transaction); 
    } 
} 

回答

2

添加@Valid对我的枚举一种坚持解决了这个问题。但是我不知道为什么错误消息说,这是从工作中努力javax.validation.constraints.Size

代码片段

@NonNull 
@Valid 
@Column(name = "type") 
@Enumerated(EnumType.STRING) 
private ServiceType type;