今天我遇到了JPA / EJB3的新问题。我有2个表User
和Group
使用映射OneToMany
(第一组 - 多用户)
当我在EJB中使用select语句时,例如:
@NamedQuery(name = "Iuser.findAll", query = "SELECT i FROM Iuser i")
发生冲突,它不知道group
字段我选择哪个表? ({1}}表中的group
字段为User
[外键],groupid
表中的group
字段为Group
[主键])< / p>
我该如何解决这个问题?
我知道EJB3中的用户Group
按钮语句没有执行,请帮忙。
答案 0 :(得分:2)
我敢打赌,IGroup
实体映射到表Group
,这是一个保留关键字,如果没有转义,可能会导致问题。
如果您正在使用JPA 2.0提供程序,则可以通过将名称括在双引号中来告诉JPA提供程序转义数据库对象名称,如下所示:
@Entity
@Table(name="\"GROUP\"")
public class IGroup {
...
}
如果您使用的是JPA 1.0,则没有标准化方法,它取决于JPA提供程序。使用Hibernate,你必须使用反引号:
@Entity
@Table(name="`GROUP`")
public class IGroup {
...
}
或者,更改非保留关键字的表名称:
@Entity
@Table(name="GROUPS")
public class IGroup {
...
}
有意义吗?