2017-06-13 58 views
0

嗨我有一個令人困惑的錯誤與我的Spring-boot-JPA-Hibernate類。jpa休眠mysql查詢中斷

我使用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?我怎麼配置它不這樣做?

+0

如下建議,你可以把列名和嘗試。如果您遇到任何問題,請舉例外。 – yogidilip

回答

0

如果您想爲自己的字段指定自己使用的列名稱@Column註釋。

例子:

@Column(name = "imageUrl1") 
private String imageUrl1; 
@Column(name = "nameFirst") 
private String name_first; 
+0

NamedQuery是爲Java Pojo名稱而不是表名寫入的。他的查詢適用於'NUser'部分。 – yogidilip

+0

@yogidilip對不起,修正 – solomkinmv

+0

非常感謝。這有助於非常簡單:) –

0

在不同情況下,似乎有很多人遇到同樣的問題。也許去看看下面的不同的命名策略:

Naming Strategy One

Naming Strategy Two

Naming Strategy Three

但是,您可以更改您的休眠的配置。看看here以獲得進一步的幫助。或者,去看看這個post,看看有人用上面的方法改變它。

+0

是的,我也已經找到了一些。謝謝,不知道爲什麼我有問題以第一種方式找到它。 謝謝! –