我有一个类似下面的实体类
String a = "a";
String b = new String("a");
System.out.println(a == b); // <-- false
System.out.println(a.equals(b)); // <-- true
}
和子实体如下
@Table(name = "PARENT")
public class Parent implements Comparable<Parent>, Serializable, Cloneable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "seq-gen")
@GenericGenerator(name = "seq-gen", strategy = "native",
parameters = {@Parameter(name = "sequence_name", value = "id_seq")})
private Long id;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
@BatchSize(size = 50)
@SortNatural
private SortedSet<Child> child = new TreeSet<>();
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
@BatchSize(size = 50)
@SortNatural
private SortedSet<Child> child = new TreeSet<>();
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
@BatchSize(size = 50)
@SortNatural
private SortedSet<Second> second = new TreeSet<>();
}
我正在通过会话
调用服务方法中的孩子@Entity
@Table(name = "CHILD")
public class Child implements Comparable<Object>, Serializable, Cloneable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "seq-gen")
@GenericGenerator(name = "seq-gen", strategy = "native",
parameters = {@Parameter(name = "sequence_name", value = "child_id_seq")})
private Long id;
@ManyToOne()
@Fetch(FetchMode.SELECT)
@JoinColumn(name = "parentId", nullable = false)
private Parent parent;
我在
处获得了Lazy Initialization异常 public Child getChild(final Long id,) throws Exception {
try {
Child child = (Child) getHibernateTemplate().execute(new HibernateCallback<Child>() {
/* (non-Javadoc)
* @see org.springframework.orm.hibernate5.HibernateCallback#doInHibernate(org.hibernate.Session)
*/
public Child doInHibernate(Session session) throws HibernateException {
Child child = (Child)session.get(Child.class, id);
if(child != null) {
Parent parent = child.Parent();
if(step.getParent() != null) {
Hibernate.initialize(parent);
if (parent.getSecond () != null) {
Hibernate.initialize(parent.getSecond());
}
}
}
}
}
}
}
我试过添加
if (parent.getSecond () != null) {
在Parent和Child类中,但没有成功,我们有严格的规则不使用EAGER。请帮我解决上述问题。