Ken*_*avR 23 java spring hibernate jpa jdbc
我使用JPA进行数据库访问,并使用正确的名称注释每一列.现在如果我执行查询(例如findAll())它返回
Unknown column 'program0_.program_id' in 'field list'
Run Code Online (Sandbox Code Playgroud)
错误消息是正确的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;
}
Run Code Online (Sandbox Code Playgroud)
标签
@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;
}
Run Code Online (Sandbox Code Playgroud)
询问
select program0_.program_id as program_1_5_, ...
Run Code Online (Sandbox Code Playgroud)
有没有理由为什么JPA将"programId"更改为"program_id"或者我错过了任何配置?
谢谢
编辑:哦抱歉忘了添加查询代码/信息.
我使用Spring Data的JpaRepository界面并尝试了findAll()查询.
@Repository
public interface ProgramRepository extends JpaRepository<Program, Long> {}
Run Code Online (Sandbox Code Playgroud)
Moh*_*eeq 21
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
Run Code Online (Sandbox Code Playgroud)
Dav*_* SN 18
如spring-boot-jpa-column-name-annotation-ignored中所述,您的列名将转换为snake case.
可能的解决方案:
小智 6
@Column(name = "PersonFullName")
私人字符串 PersonFullName;
到不带下划线的数据库表列名“ PersonFullName ”。
以下为我工作。在应用程序设置中添加它,然后使用@Column 为模型的属性指定物理数据库列名称。
@Column(name = "PersonFullName")
在Application.properties 中
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
| 归档时间: |
|
| 查看次数: |
22300 次 |
| 最近记录: |