2012-05-03 20 views
1

我正在使用EclipseIndigo,EclipseLink和MySQL我有一個叫做condition的表我需要保持它的名字,但是當我在eclipse中執行這個命令時"Query qb = em.createQuery("SELECT c FROM Condition c ")"它拋出此異常:Eclipse中使用EclipseLink並與MySQL連接的項目

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition' at line 1 
    at sun.reflect.GeneratedConstructorAccessor5.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.Util.getInstance(Util.java:386) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2683) 
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2144) 
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2310) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:931) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:607) 

我知道,MySQL有一個命令調用的條件,這就是爲什麼這個命令我拋出一個異常。問題是:有一種形式來保持我的表名爲條件,我可以執行這個命令"Query qb = em.createQuery("SELECT c FROM Condition c ")"

回答

1

作爲標識符的保留字必須用MySQL引用。

添加以下條件來幫助實體(查詢可以保持原樣):

@Table(name = "`condition`")