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
データベースからエンティティをロードEngine
すると、遅延ロードされたフィールドであるため明らかにエンティティはロードされませんが、id (主キー)Engine
がロードされます。
ここで car.getEngine().getId() を実行すると、LazyInitialization Exception がスローされます。Id 部分は既にロードされているため、getId() が例外をスローするのはなぜですか?