一尘不染

下划线不正确的JPA列

hibernate

我使用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> {}

阅读 229

收藏
2020-06-20

共1个答案

一尘不染

spring-boot-jpa-column-name-annotation-
ignored中所述
,您的列名将转换为蛇形。

可能的解决方案:

  • 设置命名策略
  • 在注释中使用小写的列名称
2020-06-20