1

我使用播放框架!但是当我运行我的项目时,它给了我这个

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;
    }


}
4

3 回答 3

4

您完全缺少类属性的映射注释。

PS请尽量遵循Java 命名约定

于 2010-11-03T03:43:51.847 回答
1

使用mysql,我们也遇到过这类问题。我们在 play framework 中发现application.conf

jpa.dialect=org.hibernate.dialect.PostgreSQLDialect

我们将其替换为

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

这解决了问题。如果您遇到此问题,可以尝试此配置设置。

于 2011-11-17T07:08:23.573 回答
0

我们也面临同样的问题。我们在 xml 和@GeneratedValueid 列中创建。解决方法是删除@GeneratedValue注释并手动输入 id 的值,jpalong默认情况下也采用,所以给出 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;

这将在名为的 mysql 模式中创建一个表,该表T_GNERATOR将跟踪 Id 的下一个值,并且 JPA over hibernate 知道如何检索该值。假设 Id 的初始值为 1,并且在每次新插入时都会增加 1,这从注释的属性中可以明显看出。

于 2015-01-25T15:13:52.003 回答