在JPA中未创建唯一约束 [英] Unique constraint not created in JPA
问题描述
我创建了以下实体bean,并将两列指定为唯一.现在我的问题是,创建表时没有唯一约束,并且日志中没有错误. 有人有主意吗?
I have created the following entity bean, and specified two columns as being unique. Now my problem is that the table is created without the unique constraint, and no errors in the log. Does anyone have an idea?
@Entity
@Table(name = "cm_blockList", uniqueConstraints = @UniqueConstraint(columnNames = {"terminal", "blockType"}))
public class BlockList {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="terminal")
private Terminal terminal;
@Enumerated(EnumType.STRING)
private BlockType blockType;
private String regEx;
}
推荐答案
好吧,我找到了另一种设计方法.更多的是因为设计是不断发展的,而不是解决方案.
但是,我从一个有同样问题的同事那里听说,创建整个数据库时,唯一约束仅是由休眠(我们正在运行JBoss 4.3)创建的.在现有数据库中创建新表时,它将不起作用.
因此,在persistence.xml中,必须将hibernate.hbm2ddl.auto
设置为create-drop
才能使其正常工作.不过我无法确认.
Well, I found another way to make the design. More because the design evolved than a work around.
I heard however from a colleague, that had had the same problem, that unique constraint only are created by hibernate (we are running JBoss 4.3) when the entire database is created. It will not work when you create a new table in an existing database.
So in persistence.xml it is necessary to set hibernate.hbm2ddl.auto
to create-drop
to make it work. I can not confirm this though.
这篇关于在JPA中未创建唯一约束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!