如何在JHipster实体中指定数据库字段名?解决映射错误问题
解决JHipster对接现有数据库时字段名映射不匹配问题
你的问题核心是:只在DTO上加了@Column注解,但Hibernate的ORM映射逻辑是基于JPA实体类的,DTO仅作为数据传输对象不参与数据库交互,所以JHipster默认的驼峰转下划线规则(把countryIso2转成country_iso_2)依然生效,导致SQL查询时匹配了错误的字段。
给你两种可行的解决方法:
方法1:直接修改生成的JPA实体类
找到项目中生成的Documenttypes.java实体类,给countryIso2字段手动添加@Column(name = "country_iso2")注解,示例如下:
@Entity @Table(name = "document_types") public class Documenttypes implements Serializable { // 其他字段定义... @Size(max = 2) @Column(name = "country_iso2") private String countryIso2; // Getters and setters... }
方法2:修改JHipster实体定义文件(推荐)
直接在JHipster的实体DSL定义中指定数据库列名,这样重新生成实体类时会自动带上正确的@Column注解,避免手动修改后被后续代码生成覆盖。修改后的实体定义如下:
entity Documenttypes(document_types) { name String required maxlength(255), status Integer required, countryIso2 String maxlength(2) column(name="country_iso2"), createdAt Instant required, createdBy Integer }
修改完成后运行jhipster entity Documenttypes重新生成实体类即可。
两种方法都能让Hibernate在生成SQL时使用数据库实际存在的country_iso2字段,解决你遇到的Unknown column 'documentty0_.country_iso_2'错误。
内容的提问来源于stack exchange,提问作者mulikevs
相关产品推荐
相关产品推荐

