2

我在我的 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() 会抛出异常?

4

1 回答 1

0

当我从数据库加载Car实体时

你确定这个对象是满载的吗?

如果它是延迟加载的,则Engineid 以及其他属性尚未加载,因此会出现异常。我建议您Hibernate.initialize(obj)在各个级别上进行游戏,以查看失败的确切位置。

于 2013-03-28T10:32:45.887 回答