【发布时间】:2015-03-01 18:10:48
【问题描述】:
我正在尝试了解以下用例的最佳解决方案。任何输入都会很有帮助。
考虑以下场景: A,B,C,D 是四个表,它们之间存在一对多的映射关系。
A --> B --> C --> D
A (One) --> B (Many) and so on..
我的用例是,我需要根据 D 中不是主键的列值从表 A 中获取数据。
根据我的理解(对 Hibernate 还是新手,所以如果我错了,请纠正我 :)),有 2 种方法
方法一:使用get()方法 首先使用hibernate Query获取主键值,然后调用get方法
Query query = sessionFactory.getCurrentSession().createQuery("from D where ...");
Int id = query.list().get(0).getId();
this.sessionFactory.getCurrentSession().get(id);
方法 2: 使用休眠查询和连接 通过连接所有 4 个表创建一个字符串并传递给 create 查询方法。
Query query = sessionFactory.getCurrentSession().createQuery(sql);
我想知道:
- 有没有办法通过传递非主键列值来调用get方法
- 除了这些方法还有其他方法吗?
- 哪种方法更好
提前致谢。
【问题讨论】: