这是我努力解决的问题(对Java和Hibernate来说很新,所以答案可能很明显,但我真的无法弄清楚):
我有一张包含非唯一ID
列的表格。表的几行看起来像这样:
ID|NAME|CODE|START_DATE|END_DATE
--------------------------------
1 |name|1234|1900-01-02|2013-01-01
--------------------------------
1 |name|1234|2013-01-01|4999-01-01
--------------------------------
2 |name1|123|1900-01-02|2013-01-01
--------------------------------
2 |name1|123|2013-01-01|4999-01-01
--------------------------------
每对行中两行之间唯一不同的是时间段(START_DATE
和END_DATE
)
是否有任何方法可以覆盖getter,仅获取ID
个行,START_DATE
为2013-01-01
答案 0 :(得分:0)
在休眠方面,大多数人会建议创建一个域访问对象(DAO)来执行专门的查询,并在控制器调用的服务层之上抛出一个服务层。
我不确定您是使用hibernate还是JPA直接使用哪个版本,否则我可能会尝试提供代码解决方案。但在大多数情况下,一对多关系确实需要在spring和hibernate中调用自己的DAO方法。
编辑:尝试类似这样的内容,然后使用JPA 2
public List<Row> findByStartDate(Date date) {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Row> criteria = cb.createQuery(Row.class);
Root<Row> r = criteria.from(Row.class);
Predicate dateEquals = cb.equal(r.get("startDate"), date);
criteria.select(r).where(dateEquals);
return entityManager.createQuery(criteria).getResultList();
}