java - 更新 JPA 表上的 UniqueConstrains

标签 java mysql hibernate jpa jpa-2.0

我有一个定义如下的表:

@Entity
@Table(
        uniqueConstraints = {@UniqueConstraint(columnNames = {"reward_id", "transaction_id"})}
)
public class ShipmentItem extends Model {
    ...
}

我想更改唯一约束以使其更宽松:

@Entity
@Table(
        uniqueConstraints = {@UniqueConstraint(columnNames = {"reward_id", "transaction_id", "sku"})}
)
public class ShipmentItem extends Model {
    ...
}

更新后的代码可以编译,但 JPA 不会更改表架构。是否有我需要使用的配置设置?

如果 JPA 不能做到这一点,那么解决这个问题的系统方法是什么?我可以编写迁移,但是,JPA 会自动生成约束的名称,因此如何删除旧约束并不明显。

不确定这是否重要,但我正在使用 hibernate 和 mysql。

最佳答案

由于您使用的是 Hibernate,因此有一个属性可以自动更新您的架构:hibernate.hbm2ddl.auto 的值为 update

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html

(但请注意,不建议在生产环境中使用它)

关于java - 更新 JPA 表上的 UniqueConstrains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496412/

相关文章:

java - Maven:在运行时使用测试 jar 时缺少依赖项

mysql - SQL 查询以获取同一表中计数大于 1 的列

java - 如何使用 hibernate 条件在一对多映射中获取单行

java - 如何将数据库数据显示到 Swings 中的 JTable(动态)?

java - 使用for语句从数组java中删除元素

java - 如何使用 Struts 将一个简单的字符串从 Action 获取到 JSP?

java - 无法获得数据库连接,因为我无法将上下文传递给 DBManager

php - 为什么我的变量不能作为 PHP 函数中的参数

mysql - 一列中有两个外键。怎么分?

java - 如何在 hibernate 中使用带有位置参数的@Loader?