是否有可能覆盖吸气剂?

时间:2014-06-02 18:14:58

标签: java hibernate

这是我努力解决的问题(对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_DATEEND_DATE

是否有任何方法可以覆盖getter,仅获取ID个行,START_DATE2013-01-01

1 个答案:

答案 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();
}