Я интегрировал загрузку Spring с приложением JavaFX, поэтому при аннотировании класса с помощью @Transactional возникнет исключение NullPointerException (возможно, существует проблема синхронизации с FXMLLoader и весенней загрузкой). Любым способом я решил создать транзакцию вручную с помощью EntityManager.Моя сущность имеет ленивые свойства. Когда я пытаюсь получить доступ к ленивому свойству внутри транзакции, я все еще получаю LazyInitializationException.
Код для моей сущности:
@Entity
@Table(name = "Product")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idproduct")
private Long idProduct;
@OneToMany(mappedBy = "product", cascade = CascadeType.ALL, orphanRemoval = true)
Set<CommercialePieceItem> commercialePieceItems = new HashSet<>();
}
Я пробовал много подходов для инициализацииленивая коллекция, но ничего не работает
1 попытка:
@Autowired
EntityManagerFactory emf;
EntityManager entityManager = emf.createEntityManager() ;
entityManager.getTransaction().begin();
entityManager.merge(product);
int qty = product.getCommercialePieceItems().size() ;
entityManager.getTransaction().commit();
entityManager.close(); ;
В строке
int qty = product.getCommercialePieceItems (). size ();он генерирует LazyInitializationException
Попытка 2:
TransactionTemplate transactionTemplate = new TransactionTemplate(platformTransactionManager) ;
transactionTemplate.execute(new TransactionCallback<Object>() {
@Override
public Object doInTransaction(TransactionStatus transactionStatus) {
Hibernate.initialize(product.getCommercialePieceItems());
return null;
}
});
Также он генерирует LazyInitializationException;
Попытка 3: я пытался использоватьвспомогательный сервис:
@Service
public class DatabaseService {
@Transactional
public void initializeLazyObject(Object objects) {
Hibernate.initialize(objects);
}
}
@Autowired
DatabaseService databaseservice ;
databaseservice.initializeLazyObject(product.getCommercialePieceItems()) ;
Как всегда, он вызывает исключение LazyInitializationException;
Итак, в чем ее проблема?Как я могу исправить это LazyInitializationException в Spring Data JPA?