org.hibernate.exception.SQLGrammarException:无法执行查询
我使用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;
}
}
你却完全丧失了为您的类的属性映射的注释。
P.S.请尽量关注Java naming conventions
这是自动完成的。 – niels 2010-11-03 06:52:38
@niels:然后生成的查询基本上是需要的。 – 2010-11-03 06:59:01
使用mysql,我们也遇到了这种类型的问题。我们在游戏框架application.conf
发现:
jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
我们更换这个与
jpa.dialect=org.hibernate.dialect.MySqlDialect.
这解决了这个问题。如果您遇到此问题,则可以尝试此配置设置。
我们也面临同样的问题。我们在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,这从注释的属性中可以看出。
请分享完整的例外讯息。如果你可以拥有由Hibernate生成的实际查询,那就太好了。 – 2010-11-03 03:42:30