2010-11-03 5 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, это было бы здорово. –

ответ

4

Вы полностью отсутствует отображение аннотаций для свойств вашего класса.

P.S. Пожалуйста, попробуйте следовать Java naming conventions

+2

Это делается автоматически. – niels

+1

@niels: тогда необходим сгенерированный запрос. –

1

Используя mysql, мы также столкнулись с этим типом проблемы. Мы нашли в рамках игры application.conf:

jpa.dialect=org.hibernate.dialect.PostgreSQLDialect 

мы заменили это с

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

Это решило проблему. Если вы столкнулись с этой проблемой, вы можете попробовать эту настройку.

0

Мы также столкнулись с той же проблемой. Мы создавали в xml и @GeneratedValue в столбце id. Разрешение снимает аннотацию @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; 

Это создаст таблицу в схеме mysql, которая называется T_GNERATOR, которая будет отслеживать следующее значение для Id и JPA по сравнению с hibernate, знает, как получить это значение. Предполагается, что начальное значение для Id равно 1, и оно увеличивается на 1 при каждой новой вставке в него, что очевидно из атрибутов аннотации.