2010-11-03 111 views
1

我使用play framework!但是,當我跑我的項目,它給我這個org.hibernate.exception.SQLGrammarException:無法執行查詢

org.hibernate.exception.SQLGrammarException:無法執行查詢

誰可以幫我?

這是我的模型:

package models; 
import java.util.*; 
import javax.persistence.*; 
import play.db.jpa.*; 
import play.db.jpa.Model; 

@Entity 
@Table(name="GxkAccount") 
public class GxkAccount extends Model { 

    private String Account; 
    private String Psw; 

    public String getAccount() { 
     return Account; 
    } 
    public void setAccount(String account) { 
     Account = account; 
    } 
    public String getPsw() { 
     return Psw; 
    } 
    public void setPsw(String psw) { 
     Psw = psw; 
    } 

    public static List<GxkAccount> GetList() 
    { 
     List<GxkAccount> infoList=GxkAccount.findAll(); 
     return infoList; 
    } 


} 
+1

請分享完整的例外訊息。如果你可以擁有由Hibernate生成的實際查詢,那就太好了。 – 2010-11-03 03:42:30

回答

4

你卻完全喪失了爲您的類的屬性映射的註釋。

P.S.請儘量關注Java naming conventions

+2

這是自動完成的。 – niels 2010-11-03 06:52:38

+1

@niels:然後生成的查詢基本上是需要的。 – 2010-11-03 06:59:01

1

使用mysql,我們也遇到了這種類型的問題。我們在遊戲框架application.conf發現:

jpa.dialect=org.hibernate.dialect.PostgreSQLDialect 

我們更換這個與

jpa.dialect=org.hibernate.dialect.MySqlDialect. 

這解決了這個問題。如果您遇到此問題,則可以嘗試此配置設置。

0

我們也面臨同樣的問題。我們在id列創建了xml和@GeneratedValue。解決方法是取消@GeneratedValue註釋並手動輸入id的值,默認情況下jpa的默認值爲long,因此給出長值,例如1l

要做自動生成遵循另一個規則。

圍繞JPA有關汽車的問題生成的ID解決如下:

修改Person.java模型類有id屬性如下註解:

@Id 
@TableGenerator(name="TABLE_GEN",table="T_GENERATOR",pkColumnName="GEN_KEY",pkColumnValue="TEST",valueColumnName="GEN_VALUE",initialValue=1,allocationSize=1) 
@GeneratedValue(strategy=GenerationType.TABLE, generator="TABLE_GEN") 
public Long Id; 

這將創建一個在名爲T_GNERATOR的mysql模式中的表,它將跟蹤Id和JPA的下一個值,通過hibernate知道如何檢索這個值。假設Id的初始值是1,並且每次插入新的插入時,它的值都會增加1,這從註釋的屬性中可以看出。

相關問題