【问题标题】:EJB multiple FK not workingEJB 多个 FK 不起作用
【发布时间】:2014-01-13 19:09:17
【问题描述】:

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

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

性别 -> id(pk), 性别

年龄组 -> id(pk),组

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

user 具有列性别和年龄,其中包含作为各个表的主键的整数。所有表都是 InnoDB 并且我已经通过 phpmyadmin 使用关系视图将它们链接起来(在此处找到)。通过 Eclipse 中的 JPA 视图查看数据库,它们正确地用 FK 注释。

我从菜单生成实体并进行设置,以便我的用户实体为我想要的两个字段设置多对一关系。我有一个用户 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 是大写的事实与它有什么关系,因为它们不是这样命名的。我已将所有列名都创建为小写。

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

【问题讨论】:

  • 如果大小写是一个问题,我假设您还有其他字段在用户和性别中不匹配,所以它不应该只影响 AgeGroup。 Group 和 Range 都是 MySQL 中的关键词,因此您可以尝试其他方法,并查看日志以查找异常——打开 EclipseLink 日志记录并查看异常。如果这没有帮助,则需要更多信息来帮助您确定正在发生的事情,例如实体的代码和日志中的错误。

标签: java mysql sql eclipse jpa


【解决方案1】:

谢谢克里斯,是使用组/范围导致了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2012-08-25
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多