用EJB3选择冲突

时间:2010-09-17 03:55:09

标签: java orm jpa

今天我遇到了JPA / EJB3的新问题。我有2个表UserGroup 使用映射OneToMany(第一组 - 多用户)

当我在EJB中使用select语句时,例如:

@NamedQuery(name = "Iuser.findAll", query = "SELECT i FROM Iuser i")

发生冲突,它不知道group字段我选择哪个表? ({1}}表中的group字段为User [外键],groupid表中的group字段为Group [主键])< / p>

我该如何解决这个问题?

我知道EJB3中的用户Group按钮语句没有执行,请帮忙。

1 个答案:

答案 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 {
    ...
}

有意义吗?