Bağlantı tablosunda ek bir sütunla çoktan çoğa ilişkisi var. Bunu, sahip olmanın çocukları hevesli bir şekilde (LazyInitializationException
almıyorum) ve ters yönde tembel olduğu şekilde yapılandırdım. Bu çalışıyor. .@Transactional (readOnly = true), LazyInitializationException öğesine yol açar.
@Transactional(readOnly = true)
public Compound getById(Long id) {
return compoundDAO.getById(id);
}
Bu değişiklikten sonra bir LazyInitializationException
olsun:
readOnly = true
yöntemi
getById
set sadece
@Transactional
DAO ve Servis sınıfların sınıf düzeyinde oldu önce (işlemler ince ayar istedi aşağıdaki pasajı:
Compound compound = compoundService.getById(6L);
Structure structure = compound.getComposition().get(0).getStructure();
System.out.println("StructureId: "+ structure.getId()); // LazyInitializationException
herkes bu davranış açıklayabilir bu işleri (readOnly = true)
kaldırırsanız neden inci bir neden görmüyorum ben kafa karıştırıcı Bahar + Hibernate Kind kullanın!?. hangi verinin yüklendiğini etkilemeli?
DÜZENLEME: ilişki tanımlarının
Parçacıklar. Bu, bağlantı tablosundaki bir sütuna çoktan çoğa var.
sahip olmak tarafı (örneğin, uygun bileşik içerir):
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.structure",
cascade = CascadeType.ALL)
@OrderBy("pk.compound.id ASC")
private List<CompoundComposition> occurence;
Çok-one @Embeddable İD sınıfı
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public Compound getCompound() {
return compound;
}
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public Structure getStructure() {
return structure;
}
DÜZENLEME 2:
@OneToMany(fetch = FetchType.EAGER, mappedBy = "pk.compound",
cascade = CascadeType.ALL, orphanRemoval = true)
@OrderBy("pk.structure.id ASC")
private List<CompoundComposition> composition = new ArrayList<>();
yan Ait :
St ack İz
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:272) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]
at org.bitbucket.myName.myApp.entity.Structure_$$_javassist_0.getId(Structure_$$_javassist_0.java) ~[classes/:na]
at org.bitbucket.myName.myApp.App.main(App.java:31) ~[classes/:na]
DÜZENLEME 3:
Giriş Readonly ile çok farklı ve parça ilişkiler örneğin yüklenen vardı eksik:
Ayrıca benim yorumu görmek. Bazı seçmeler günlüğünde eksik.
DÜZENLEME 4: Temel bir DriverManagerDataSource ve hiçbir bağlantı havuzlu
yüzden yorgun. Sorun tam olarak aynı. Benim için Hibernate bir sorun gibi görünüyor. geç yükleme işlemi içinde olur, böylece
Sınıf düzeyi işlem tanımı nedir? –
Sadece @ Transactional. –
Model sınıflarının snippet'lerini yayınlayabilir misiniz? Ve hala, DAO sınıfının en üstünde 'Transactional 'açıklaması var mı? – sbzoom