gpt4 book ai didi

java - 访问延迟加载字段的 id 时出现 LazyInitialization Exception

转载 作者:行者123 更新时间:2023-11-29 09:04:39 24 4
gpt4 key购买 nike

我在我的 java 项目中使用 Hibernate。我有以下实体结构:

@Entity
@Table(name = "car")
public class Car implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "engine_id", nullable = false)
private Engine engine;
}

现在,当我从 db 加载 Car 实体时,显然 Engine 实体不会被加载,因为它是延迟加载的字段,但是 id(主键) Engine 将被加载。

现在,如果我执行 car.getEngine().getId(),则会抛出 LazyInitialization 异常。由于 Id 部分已经加载,那么为什么 getId() 会抛出异常?

最佳答案

when I load Car entity from db

您确定这个对象已完全加载吗?

如果它是延迟加载的,Engine id 以及其他属性尚未加载,因此会出现异常。我建议您在每个级别使用 Hibernate.initialize(obj) 来查看失败的确切位置。

关于java - 访问延迟加载字段的 id 时出现 LazyInitialization Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15678583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com