我正在尝试使用我有一些知识的hibernate来理解现有的应用程序。在这个应用程序中,已经创建了一个数据库模式,并且已经从 DB 模式自动生成了类。
让我们以 DB 中的 2 个表为例:
PERSON(id, firstname, surname)
OBJECT(id, owner_id, description)
在表中OBJECT
,owner_id
会是一个外键PERSON.id
。
生成的类大概是这样的:
class Person {
// ok for the following
int id; // with getters and setters
String firstname; // with getters and setters
String surname; // with getters and setters
// dunno why the following ?
Set objects = new HashSet(0);
Set getObjects() { return this.objects; }
void setObjects(Set objects) this.objects = objects; }
}
class Object {
int id; // with getters and setters
Person owner; // with getters and setters
String description; // with getters and setters
}
首先,我不知道为什么会引用生成的类中拥有的对象集Person
。其次,如果我通过 HQL 查询得到一个Object
或一个,这个成员是否已满载?我应该如何设置休眠以确保它是?List<Object>
Person
Object
我之所以问是因为在我的应用程序中,我将休眠会话作为单独的可执行文件运行,而另一个被驱逐的应用程序与休眠应用程序通信并要求它发送一些持久对象。我可以得到一个,Object
但是如果我在这个对象上制作object.getPerson().getFirstname()
,我会遇到一个org.hibernate.LazyInitializationException: could not initialize proxy - no Session