java - 下划线不正确的 JPA 列

标签 java spring hibernate jpa jdbc

我使用 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 接口(interface)并尝试了 findAll() 查询。

@Repository
public interface ProgramRepository extends JpaRepository<Program, Long> {}

最佳答案

http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

spring.jpa.hibernate.naming.strategy 不是使用 Hibernate 5 的 Spring JPA 实现支持的属性。

application.properties 中使用以下属性

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

关于java - 下划线不正确的 JPA 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544541/

相关文章:

java - 为什么 Autowiring Spring 存储库不起作用?

java - 使用 hibernate 和 JPA 的示例项目

java - 使用复合主键的 SELECT 查询

java - Erlang 需要很长时间才能计数?

java - 下载照片时遇到问题

java - Lombok:等于子类中的字符串实例变量

java - 验证货币的周末或非工作日

java - Hibernate一对多关系: can't remove children once parent is removed

java - 如何将 JVM 汇编代码编译成字节码?

java - QueryDSL @OneToOne Join-FetchMode 与 Hibernate