【发布时间】:2021-12-28 05:09:11
【问题描述】:
我正在研究一个培训项目 - 使用数据库。似乎有人说他是一名工人。目前还无法完全提升该项目。 这是实体的类描述。
@Entity
@Table(name = "inventories", schema = "inventories")
public class Inventory {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "part_num_oem")
private String partNumOEM;
@Column(name = "part_num")
private String partNum;
@Column(name = "part_name")
private String partName;
private String version;
private Integer year;
@Column(name = "image_exists")
private Boolean imageExists;
}
这是创建表本身的 liquibase 文件
<changeSet id="create_inventories" author="adam">
<createTable tableName="inventories" schemaName="inventories">
<column name="id" type="BIGINT" autoIncrement="true">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="part_num_oem" type="VARCHAR(100)"/>
<column name="part_num" type="VARCHAR(100)"/>
<column name="part_name" type="VARCHAR(255)">
<constraints nullable="false"/>
</column>
<column name="version" type="VARCHAR(50)"/>
<column name="year" type="INT"/>
</createTable>
</changeSet>
此文件中的实体描述类中没有 image_exists 字段。 这不是一个错误吗? 或者有可能做到这一点吗? 这种情况下在数据库中添加新实体时不会弹出错误?
Entity Entity 文件不应该与 liquibase 文件完全匹配吗?
【问题讨论】:
-
这绝对是一个错误 - 来自现实生活中发生的错误。当尝试访问该实体时,JPA 提供者最终会在运行时发现。您可能会在部署时使用(特定于 Hibernate)
<property name="hibernate.hbm2ddl.auto" value="validate"/>之类的东西来警告您。可以编写某种包含 Liquibase 脚本的集成测试。我自己的example。