On a bidirectional @OneToOne associations the FetchType.LAZY has no effect on the non-owning side.
{code:java} public class JPAUnitTestCase {
private EntityManagerFactory entityManagerFactory;
@Before public void init() { entityManagerFactory = Persistence.createEntityManagerFactory( "templatePU" ); }
@After public void destroy() { entityManagerFactory.close(); }
@Test(expected = LazyInitializationException.class) public void hhh123Test hhh12461Test () { EntityManager entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin();
User user = new User(); entityManager.persist( user );
Detail detail = new Detail(); detail.setUser( user ); entityManager.persist( detail );
entityManager.getTransaction().commit(); entityManager.close();
entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin();
user = entityManager.find( User.class, user.getId() );
entityManager.getTransaction().commit(); entityManager.close();
Assert.assertNull( user.getDetail() ); } }
@Entity public class User {
@Id @GeneratedValue private Long id;
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY) private Detail detail;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public Detail getDetail() { return detail; }
public void setDetail(Detail detail) { this.detail = detail; } }
@Entity public class Detail {
@Id @GeneratedValue private Long id;
@OneToOne(fetch = FetchType.LAZY) private User user;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public User getUser() { return user; }
public void setUser(User user) { this.user = user; } } {code} |
|