我在我的 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;
}
现在,当我Car
从 db 加载实体时,显然Engine
实体不会被加载,因为它是延迟加载字段,但将加载 id(主键)Engine
。
现在如果我执行 car.getEngine().getId(),那么它会抛出 LazyInitialization 异常。由于 Id 部分已经加载,那么为什么 getId() 会抛出异常?