【发布时间】:2010-10-17 07:54:35
【问题描述】:
这里有一个相当具体的问题,但它已经困扰我一天了:
我在 PostgreSQL 8.3 上使用 Hibernate Core、注释和验证器。
我有以下课程设置:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Entry {
@EmbeddedId
protected EntryPK entryPK;
@ManyToMany
private Set<Comment> comments = new HashSet<Comment>();
...
@Embeddable
public class EntryPK implements Serializable {
@ManyToOne(cascade = CascadeType.ALL)
private Database database;
@Length(max = 50)
@NotEmpty
private String pdbid;
...
我希望在我的 PostgreSQL 数据库中看到长度约束转换为长度约束(它适用于 @Entity 内的其他字段,而不是 @Embeddable 的),但它似乎不想工作..
即使使用 @IdClass 而不是 @EmbeddedId 并对 @Entity 中的匹配字段应用长度约束也不能解决此问题:数据库字段仍然是 varchar 255(对于我的需要来说,大约 250 太大了)。
有人可能会说我不应该关心这个级别的细节,但是我的强迫症方面拒绝放手.. ;) 是否不可能在 EmbeddedId 中使用 Hibernate Validator Annotations 并让 hbm2ddl 将约束应用于数据库字段?
【问题讨论】:
-
只是快速跟进:最终选择了不同的实现(使用生成的 ID(所以是的,我投降了;)),但我猜这可能是功能请求的候选者/向 hibernate-validator 项目报告错误..
-
我想我可能遇到了同样的问题。请求@Tim 查看下面发布的代码。
标签: hibernate validation hbm2ddl