【发布时间】:2015-04-17 03:32:47
【问题描述】:
我使用 JPA 进行数据库访问,并用正确的名称注释每一列。现在,如果我执行一个查询(例如findAll()),它会返回
Unknown column 'program0_.program_id' in 'field list'
错误信息正确program_id未知,因为真实姓名是programId。
模型:程序
@Entity
@Table(name = "programs")
@XmlRootElement
public class Program implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "programId")
private Long programId;
@ManyToMany
@JoinTable(
name = "programlabels",
joinColumns = {
@JoinColumn(name = "program", referencedColumnName = "programId")},
inverseJoinColumns = {
@JoinColumn(name = "label", referencedColumnName = "labelId")})
private Collection<Label> labels;
}
标签
@Entity
@Table(name = "labels")
@XmlRootElement
public class Label implements Serializable {
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 100)
@Column(name = "labelId")
private String labelId;
}
查询
select program0_.program_id as program_1_5_, ...
JPA 将“programId”更改为“program_id”是否有原因,或者我缺少任何配置?
谢谢
编辑:抱歉忘记添加查询代码/信息。
我使用 Spring Data 的 JpaRepository 接口并尝试了 findAll() 查询。
@Repository
public interface ProgramRepository extends JpaRepository<Program, Long> {}
【问题讨论】:
-
我可能是错的,但我认为这对我没有帮助,因为问题是 JPA 使用了错误的列名,无论我在控制台中看到什么。我在两个输出中看到的列名是相同的。
-
你的问题可能和这个有关:spring-boot-jpa-column-name-annotation-ignored
-
谢谢,这是同一个问题。我在配置中添加了一个命名策略,现在它可以工作了。如果您想将其添加为答案,您将获得一些无用的互联网积分。
标签: java spring hibernate jpa jdbc