【发布时间】:2013-12-02 03:57:33
【问题描述】:
我想使用外键对象(关系一对一)从数据库中加载我的对象 我想要实现的是像这样使用我的对象。
parent.getChildrenFk().getName();
我知道我可以通过这两种方式做到这一点
1. Lazy load
...
SQLQuery sqlQuery = session.createSqlQuery("SELECT * FROM parent").addEntity(Parent.class);
List<Parent> list = sqlQuery.list();
for(Parent p : list){
String name = p.getChildFk().getName();
}
return list;
...
此解决方案的缺点是每个孩子的 SQL 查询(我有超过 10000 个父对象)。
2.Second solutions is to get list of Objects[]
obj[0] is Parent, and obj[1] is Child
SQLQuery sqlQuery = session.createSqlQuery("SELECT * FROM parent INNER JOIN child ch ON parent.child_fk = child.child_id").addEntity(Parent.class).addEntity(Child.class);
return sqlQuery.list();
这个解决方案的缺点是我不能以这种方式访问我的对象 parent.getChildrenFk().getName(); 有没有办法在一个查询中加载父对象和子对象像我写的那样访问子obj?
【问题讨论】:
标签: hibernate