mysql - 未在 JPA 中创建的唯一约束

标签 mysql jpa jboss unique-constraint

我创建了以下实体 bean,并将两列指定为唯一的。现在我的问题是该表是在没有唯一约束的情况下创建的,并且日志中没有错误。 有人有想法吗?

@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 以使其工作。不过我无法确认这一点。

关于mysql - 未在 JPA 中创建的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944112/

相关文章:

java - JMX 控制台插入中缺少一些明显的东西

jboss - postman 请求实体太大-413

PHP + MySQL "WHERE ... IN"不起作用

java - JPA 查询语法异常 : unexpected AST node: {vector} For In condition

mysql - 两个数字相减,乘以另一个数字,将此结果添加到日期,然后将其转换为日期

java - Hibernate/JPA 将 native 查询的结果映射到持有实体的非实体

java - 使用 JSF、PrimeFaces 和 JPA : Create Basic WebApp without using Generated CRUD Classes, 表单等

jboss - 在 7.1.1.Final 之后在生产环境中使用哪个 jBoss?

php - 使用 php PDO 执行 mysql PDO 语句

php - 如何选择数据库中的所有表