您好,我的 Spring-boot-JPA-Hibernate 类出现了令人困惑的错误。
我使用 JPA Dali 工具从 SQL 架构创建实体类。 在使用它们(使用 Spring-boot-jpa/hibarnate)时,我遇到了一些与不匹配的查询有关的奇怪问题。 这是一个例子:
属性:
hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/users
spring.datasource.username=root
spring.datasource.password=root
实体:
@Entity
@Table(name="n_user")
@NamedQuery(name="NUser.findAll", query="SELECT n FROM NUser n")
public class NUser implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private String imageUrl1;
private String name_first;
public NCaterer() {
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getImageUrl1() {
return this.imageUrl1;
}
public void setImageUrl1(String imageUrl1) {
this.imageUrl1 = imageUrl1;
}
public String getName_first() {
return this.name_first;
}
public void setName_first(String name_first) {
this.name_first = name_first;
}
}
存储库:
public interface UserRepo extends CrudRepository<NUser, Long> {
}
但是 Hibernate 创建了它的这个查询:
Hibernate:
/* select
generatedAlias0
from
NUser as generatedAlias0 */ select
nuser0_.id as id1_0_,
nuser0_.image_url1 as image_ur2_0_,
nuser0_.name_first as name_firs3_0_
from
n_user nuser0_
这里的问题是image_url1,它应该是imageurl1,如实体类中所述。这种情况发生在几个方面。
为什么 Hibernate 在查询中将 CamelCase getters 转换为camel_case?我该如何配置它不这样做?
最佳答案
如果您想通过自己的字段使用 @Column
注释来指定列名称。
示例:
@Column(name = "imageUrl1")
private String imageUrl1;
@Column(name = "nameFirst")
private String name_first;
关于java - jpa hibernate mysql 查询损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531341/