l24*_*c4l 2 java orm exception jpql jpa-2.0
我有两个实体User和Group:
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String password;
private String email;
@ManyToMany
@JoinTable(name="user_group", joinColumns={@JoinColumn(name="USERNAME")}, inverseJoinColumns={@JoinColumn(name="ID")})
private List<Group> group;
// getters and setters...
}
@Entity
public class Group implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String id;
// getters and setters...
}
Run Code Online (Sandbox Code Playgroud)
它是ManyToMany的单向.它产生表格user和user_group.现在我有简单的查询:
Query q = em.createQuery("select g from Group g");
List<Group> usersGroup = q.getResultList();
Run Code Online (Sandbox Code Playgroud)
抛出异常:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: 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 'GROUP' at line 1
Error Code: 1064
Call: SELECT ID FROM GROUP
Query: ReadAllQuery(referenceClass=Group sql="SELECT ID FROM GROUP")
... stack trace...
Run Code Online (Sandbox Code Playgroud)
只要您告诉JPA提供程序必须将这些名称解释为分隔标识符,您就可以使用Group或使用User数据库对象.
使用JPA 2.0和注释,通过将名称括在双引号内,将名称指定为分隔标识符,从而对内部引号进行转义:
@Entity
@Table(name="\"User\"")
public class User implements Serializable {
...
}
@Entity
@Table(name="\"Group\"")
public class Group implements Serializable {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2445 次 |
| 最近记录: |