今天我遇到了 JPA/EJB3 的新问题。我有 2 个表 User
和 Group
具有映射 OneToMany
(组一 - 用户多)
当我在EJB中使用select语句时,例如:
@NamedQuery(name = "Iuser.findAll", query = "SELECT i FROM Iuser i")
发生冲突,它不知道group
字段我选择在哪里表? (User
表中的 group
字段是 groupid
[外键],Group
中的 group
字段code> 表是 Group
[主键])
如何解决这个问题?
我知道EJB3中的用户user.group
按钮语句未执行,请帮忙。
最佳答案
我敢打赌,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 {
...
}
有意义吗?
关于java - 选择与 EJB3 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732573/