【问题标题】:Unable to retrieve hibernate foreign keys from a servlet context无法从 servlet 上下文中检索休眠外键
【发布时间】:2017-09-10 18:11:17
【问题描述】:

我无法使用 Hibernate、Tomcat 和 MySQL 读取引用实体的 ID。

例如,运行以下代码:

List<UserAccount> users = listEntities(UserAccount.class);
    for (UserAccount user : users) {
        UserAccountStatusCatalog status = user.getStatus();
        System.out.println("[User (" + user.getId() + ") : "+user.getAccountName()+"] - " + status + ": " + status.getId());
    } 

将在使用 SQL Server DB 的简单 Java 应用程序或 servlet 上下文中给出以下输出

[用户 (1) : 系统] - 暂停:15020
[用户 (2) : admin] - 活动:15010
[用户(4):测试] - 活动:15010

这来自使用 MySQL DB 的 servlet 上下文

[用户(1):系统] - 暂停:0
[用户 (2):管理员] - 活动:0
[用户(4):测试] - 活跃:0

这是在运行 Java 8 的 Tomcat 7 服务器上
数据库是 MySQL 5.5,我使用的是 hibernate-core:5.1.0.Final

我已经测试了很多不同的方法,例如更改 Hibernate 版本、将 DB 更改为 MariaDB(不工作)和 SQL 服务器(工作完美)。
我已经在 Tomcat 6,7 和 8 上进行了测试(结果相同,但不起作用)
在 java 7 和 8 上测试(结果相同,不工作)

实体

@Entity(name = "UserAccount")
@Table(name = "user_account")
@Audited
public class UserAccount {  
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name="id_status", nullable=false, foreignKey=@ForeignKey(name = ForeignKeys.FK_USERACCOUNT_STATUS))
    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
    private UserAccountStatusCatalog status;
    [...]


@Entity
@Table(name="user_account_status_catalog")
public class UserAccountStatusCatalog {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = ID_COLUMN_NAME, nullable = false)
    private int id;

    @Column(name = "name", nullable = false)
    private String name;
}

所以我的问题是
有没有人对这个特定问题有任何经验,或者对我可以在哪里继续调试有任何指示,因为我完全不知道该怎么做。

【问题讨论】:

  • 你能分享UserAccountUserAccountStatusCatalog的代码吗?

标签: java mysql hibernate tomcat servlets


【解决方案1】:

所以我设法自己解决了这个问题。原来罪魁祸首是 javassist-3.16.0 导入。 用 javassist3.20.0 导入替换这个旧版本后,一切都按照预期的方式工作。

因此,对于遇到类似问题的任何人来说,替换此导入是一个不错的起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多