【问题标题】:hibernate column unique property not changing休眠列唯一属性不变
【发布时间】:2018-05-18 08:54:06
【问题描述】:

有什么方法可以在不删除表格的情况下将列属性从unique=true 更改为unique=false

现在我陷入了先前创建表并且这些表也包含数据的情况。当我将unique=true 更改为unique=false 时,它不会对表格进行任何更改。

【问题讨论】:

  • 您需要在数据库中手动进行更改。如果 Hibernate 每次更改实体时都修改架构,那将是可怕的。如果您从未使用过数据库(使用 Hibernate 不算数),那么您也会学到很多新东西!

标签: java postgresql hibernate spring-mvc


【解决方案1】:

你可以很容易地在数据库中做这件事。假设我有一个 Person_name 具有唯一约束的表 Person。

ALTER TABLE Person
DROP INDEX Person_name;

or

ALTER TABLE Persons
DROP CONSTRAINT Person_name;

如果您尝试使用 hibernate 实现相同的目的,hibernate 将尝试删除并再次创建表,这是您不希望发生的。

【讨论】:

    【解决方案2】:

    嗯...我不知道您是否可以允许自己进行数据库删除,但您可以尝试在应用程序属性文件中使用:

    spring.jpa.hibernate.ddl-auto=update
    

    spring.jpa.hibernate.ddl-auto=create-drop
    

    欲了解更多信息:
    https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

    另外,如果您知道您将在数据库架构中进行大量更改,并且希望使其易于工作,您应该熟悉 https://www.liquibase.org/

    【讨论】:

    • 更新仅适用于架构更改,不适用于约束等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多