我正在使用Hibernate 4,启用了延迟加载。我有一个基本实体,包含对其他对象的引用。以下是一个简单的例子:
@Entity public class Employee{ public int id; public String name; public Employee boss; //more code follows }
当我从数据库加载Employee实体时,由于延迟加载,boss对象由Hibernate代理对象表示。后来我需要访问boss属性,它可能会或者可能不在它加载的同一个会话中。如果我尝试使用boss对象并且它没有被加载而且我处于不同的看法我会得到以下错误:
Cause: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
如何判断boss属性返回的Employee实体是代理还是实际实体?
我真的想要一个答案,所以我可以做类似下面的代码:
public Strin getBossName(Employee emp){ Employee boss; if(isProxy(emp){ boss = getBossFromDatabase(emp); }else{ boss = emp.getBoss(); }enter code here return boss.getName(); }
提前致谢!