EJB多个FK无法正常工作

时间:2014-01-13 19:09:18

标签: java mysql sql eclipse jpa

我正在尝试使用foriegn键将实体从一个表链接到另外两个表。我的表是:

用户 - > id(pk),用户名,密码,性别(fk),年龄(fk)

性别 - > id(pk),性别

年龄组 - > id(pk),group

所有ID都是int(11),所有其他列都是varchar

用户有列性别&包含整数的age,该整数是各个表的主键。所有表格都是InnoDB&我通过phpmyadmin使用关系视图(在这里找到)将它们链接起来。通过Eclipse中的JPA视图查看数据库,可以使用FK正确注释它们。

我从菜单中生成实体并进行设置,以便我的用户实体为这两个字段设置了ManyToOne关系,这就是我想要的。我有一个用户bean类,我从我的servlet创建,将用户作为参数添加到请求中,并在jsp文件中访问以将值写入页面。我想打印用户将其年龄组和性别命名为页面。

${user.getUsername()}
${user.getGenderBean().getGender()}
${user.getAgegroup().getGroup()}

当我在JPA中设置了所有三个时,我只会在页面上打印用户名。奇怪的是,如果我重新执行实体并且没有设置年龄组,则会打印性别。反之亦然。上面的顺序是它们的使用方式。当我意外地创建了双向关系时,GenderBean被生成了一次,但即使我生成我想要的方式,即单向,这个名称仍然存在。

我正在使用Eclipse Kepler,Glassfish 4,MySql 5.5.31&的EclipseLink

我的sql语法错误如下:

SELECT ID, RANGE FROM agegroup WHERE (ID = ?)

为了防止关键字混乱发生,我将groupt改为range。 ID和RANGE是否与大写有关,因为它们没有这样命名。我创建了所有列名称小写。

有谁能告诉我这里我做错了什么?

1 个答案:

答案 0 :(得分:0)

谢谢Chris,使用群组/范围引起了我的问题。