【问题标题】:Hibernate asking for javax.validation.constraints.Size for enumHibernate 要求 enum 的 javax.validation.constraints.Size
【发布时间】:2015-12-02 09:28:52
【问题描述】:

使用 dropwizard 和休眠 当我尝试坚持时的例外是

找不到约束的验证器 'javax.validation.constraints.Size' 验证类型 '枚举.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);
    }
}

【问题讨论】:

    标签: java hibernate validation enums dropwizard


    【解决方案1】:

    在我的枚举中添加一个@Valid 可以解决这个问题。但是我不知道为什么错误消息说它正在尝试 javax.validation.constraints.Size

    来自工作代码的代码 sn-p

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2012-12-24
      • 1970-01-01
      相关资源
      最近更新 更多