Spring引导JPA:删除实体更改列
我尝试使用spring-boot-starter-data-jpa从java类的MySQL数据库中创建表。除非在Java类中更改/删除列名,否则它工作得很好。下面一个例子:Spring引导JPA:删除实体更改列
我有一类叫“员工”有2个字段:ID,名称
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "name", length = 15)
private String name;
public Staff() {
}
// some setter and getter here
当我跑我的项目,产生了“员工”表正是我想要有2列: ID,名称。问题是,如果我分裂“名”成“名字”和“姓氏”是这样的:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "firstname", length = 15)
private String firstname;
@Column(name = "lastname", length = 15)
private String lastname;
public Staff() {
}
//some getter and setter here
的“工作人员”表现在包含4列(ID,姓名,名字,姓氏),而不是3。然后我需要自己删除“名称”列。无论如何要自动摆脱它?
看起来像您使用:
spring.jpa.properties.hibernate.ddl-auto=update
78.1使用JPA
spring.jpa.generate-DDL(布尔值)切换功能和关闭,并且 是供应商独立初始化的数据库。 spring.jpa.hibernate.ddl-auto(枚举)是一个 休眠功能,它以更细化的 方式控制行为。请参阅下面的更多细节。
您可以明确设置spring.jpa.hibernate.ddl,汽车和标准 Hibernate的属性值是没有,验证,更新,创造, 创建降。
,你可以看到有什么新的(从休眠状态不同)
DDL-AUTO =更新 - 产生变化但它doen't降不映射列。 例如,您可以有一个包含10列的表格,并且仅为其中的3个表格绘制一个表格,在这种情况下,自动模式可能会删除它们,但对于非强制性的hibernate/jpa完全映射表格实体。这里是2011年11月创建的jira票Alter and drop columns with hbm2ddl.auto=update,现在状态是'不固定'。
如果您经常更新db(您的域模型已更改),则可以使用ddl/dml工具,如liquibase,flywaydb。您可以在xml文件中描述数据库更改,并执行工具,所有更改将自动应用(使用自动控制之前已修改的内容以及现在应该修改的内容)。
只是推荐: 如果你不想猜测为什么某些东西在生产中被抛弃,最好使用ddl工具。 hibernate.ddl-auto主要用于开发,而不是用于生产。在生产中,您可以不使用或验证 - 因为它们是安全的。
TLDR将此键更改为此值。 spring.jpa.hibernate.ddl-AUTO =创造降 –