হাইবারনেট সেশনফ্যাক্টরি তৈরির সময় এই ব্যতিক্রম ছুঁড়ে ফেলেছে:
org.hibernate.loader. MultipleBagFetchException: একসাথে একাধিক ব্যাগ আনতে পারে না
এটি আমার পরীক্ষার কেস:
Parent.java
@Entity
public Parent {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
// @IndexColumn(name="INDEX_COL") if I had this the problem solve but I retrieve more children than I have, one child is null.
private List<Child> children;
}
Child.java
@Entity
public Child {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Parent parent;
}
কিভাবে এই সমস্যা সম্পর্কে? আমি কি করতে পারি?
সম্পাদনা
ঠিক আছে, আমার সমস্যাটি হ'ল আমার পিতামাতার মধ্যে অন্য "পিতামাতার" সত্তা রয়েছে, আমার আসল আচরণটি হ'ল:
Parent.java
@Entity
public Parent {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
private AnotherParent anotherParent;
@OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
private List<Child> children;
}
AnotherParent.java
@Entity
public AnotherParent {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
private List<AnotherChild> anotherChildren;
}
হাইবারনেট দুটি সংগ্রহ পছন্দ করে না FetchType.EAGER
তবে এটি একটি ত্রুটি বলে মনে হচ্ছে, আমি অস্বাভাবিক জিনিসগুলি করছি না ...
সরানো হচ্ছে FetchType.EAGER
থেকে Parent
বা AnotherParent
সমাধান সমস্যা, কিন্তু আমি এটা প্রয়োজন, তাই বাস্তব সমাধান ব্যবহার করা @LazyCollection(LazyCollectionOption.FALSE)
পরিবর্তে FetchType
(ধন্যবাদ Bozho সমাধান জন্য)।
select * from master; select * from child1 where master_id = :master_id; select * from child2 where master_id = :master_id
List<child>
সঙ্গে fetchType
জন্য সংজ্ঞায়িত একাধিক List<clield>