2010-11-03 85 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,这从注释的属性中可以看出。

相关问题