2010-09-17 91 views
1

今天我遇到了JPA/EJB3的新问题。我有2台UserGroup 与测绘OneToMany(集团之一 - 用户多)使用EJB3选择冲突

当我使用SELECT语句中的EJB,例如:

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

冲突发生,但不知道group我场选择桌子在哪里? (在Usergroup场是Groupgroupid [外键]和groupGroup [主键])

我怎样才能解决这个问题?

我知道用户user.group EJB3中的按钮语句不能执行,请大家帮忙。

+0

对不起,我试图理解这个问题......但没有成功。你在说什么冲突?你有错误信息吗?你能提供吗?你还可以提供映射的实体吗? – 2010-09-17 14:33:54

+0

谢谢你回答我的问题是用户表有一个名称为iGroup的字段它是表组的外键。他们的关系是多对一的 - 表用户(许多) - 表组(一)它意味着一个组可以有许多用户加入一个组!和当我使用Entitymanager.createNameQuery(“User.findAll”)时,我运行它错误发生错误代码1064.如你写的SQL脚本作为选择组从用户它会发生错误代码1064,但我用Select u.group从用户ü,它工作得很好 – Kency 2010-09-17 16:22:01

+0

我想从人民的建议,如何解决它?,现在我有新的问题它是:javax.el.PropertyNotFoundException:/test.xhtml @ 24,173 value =“#{userController.users。用户名}“:目标无法访问,'null'返回null!请帮帮我 ! – Kency 2010-09-17 16:23:30

回答

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

是否有意义?

+0

是的!我会查一下 !!谢谢你回复 – Kency 2010-09-18 06:50:22

+0

是啊!我解决了我的问题非常感谢你! – Kency 2010-09-18 07:17:20

+0

@Kency不客气。 – 2010-09-18 07:56:10