当前位置: 首页 > 知识库问答 >
问题:

Hibernate/Jpa OneToMany无法正确检索数据

苏阳州
2023-03-14

我有一个名为User的实体类,其中包含数据库的OneToMany列:

  @Setter
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    @JoinTable(
        name = "USER_CARS",
        joinColumns = @JoinColumn(name="USER_ID", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name="CAR_ID", referencedColumnName = "id")
    )
    private List<Car> cars;

当我将用户插入数据库时,一切正常,他的汽车也被添加到user_cars表中。当检索汽车时,我得到这个异常:

Method threw 'org.hibernate.LazyInitializationException' exception.

我已经搜索了其他答案,但没有找到如何解决它。这就是我试图检索用户的方式。

public T findById(Long id) {
    em = emf.createEntityManager();
    em.getTransaction().begin();

    T et = (T) em.find(entityClass, id);

    em.getTransaction().commit();
    em.close();

    return et;
}

问题是什么?我如何解决?我不明白后台发生了什么。

共有1个答案

濮阳国兴
2023-03-14

根据异常消息,您似乎正在检索< code>List cars的内容,但是< code>EntityManager会话已经关闭。而不是您可以使用的集合的默认惰性初始化

@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.EAGER)
 类似资料:
  • 这是我的第二个版本,我试图从Firebase检索代码,并用它做一些事情。这是我的第二种方式: 这将崩溃,并出现错误代码: 未能将类型“__NSCFString”(0x10A77F4A0)的值强制转换为“NSDictionary”(0x10A780288)。在“更新”行。这是我的第一次尝试: 打印更多数据: -路径通道引用:可选(https://x.com/channels/-kegkajavh6u

  • 我通过在方法之外添加一个简单的Ride实例来测试它,它工作得很好。 我还尝试将监听器更改为,结果相同。 Edit2:当我试图从数据库中检索整数时,我会得到一条错误消息。

  • 问题内容: MVC4 +实体框架4.4 + MySql + POCO /代码优先 我正在设置以上配置..这是我的课程: 这是我的web.config设置… 数据库AND表已经存在… 我对mvc还是很陌生,但是正在使用本教程 应用程序构建良好…但是,当我尝试使用Product(BTD.Data)作为我的模型类并使用BTDContext(BTD.DataContext)作为我的数据上下文类添加控制器时

  • 我是Flink的新手,今天我遇到了一个奇怪的情况。 我运行Kafka服务器,然后使用confluent producer发送消息。使用consumer,我得到了正确的信息,但在应用程序中,我不能。我使用此图像设置message broker 我用这个向Kafka服务器发送消息 我发送的消息是 我用这个来听Kafka的留言 这是我的密码 当我将kafka源代码更改为KafkaSource时 user

  • 我正在尝试获取属性的值以使用引导程序进行删除确认。问题是我无法获取的值。 当我按下控制台按钮时,结果是 管理员视图:488 初始化原型: 对象(0) 数据表: ƒ (t) 添加: ƒ (e,t) 添加返回: ƒ (e) 添加类: ƒ (e) 词缀: ƒ (c) 之后: ƒ () ajax完成: ƒ (e) ajax错误: ƒ (e) ajax发送: ƒ (e) ajax开始: ƒ (e) ajax

  • 这只检索最后一个加入服务器的用户。 方法#2 这只检索2个用户。在调试时,我发现它正在检索机器人本身和我。 根据文档guildchannel.getMembers()返回所有具有{@link net.dv8tion.jda.api.Permission#message_read}权限的成员 因此,我给了所有用户阅读测试服务器中消息的权限。 文档还说guild.getMembers()将只检查缓存的