2014-06-02 5 views
0

Вот проблема, которую я борюсь с (довольно новыми для 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)

Есть ли способ, чтобы переопределить добытчик, чтобы получить ID S только из строк, где START_DATE является 2013-01-01

+1

Почему бы вы сделать это, перекрывая добытчика? Конечно, это должно быть частью вашего запроса вместо этого ... –

ответ

0

в спящем режиме, большинство хотело бы предложить, чтобы сделать объект доступа к домену (DAO) для выполнения специализированных запросов и бросить слой услуг сверх того, что ваш контроллер будет звонить.

Я не уверен, что вы используете спящий режим или JPA прямо с какой версией, иначе я могу попытаться предложить решение для кода. По большей части, однако, отношения «один ко многим» действительно нуждаются в собственном вызове метода DAO весной и спящим.

Edit: Попробуйте что-нибудь подобное, то для 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(); 
} 
+0

Это JPA2 прямо. – konart

+0

Хорошо, я изменил способ, которым может выглядеть метод в вашем DAO. – tmanion

Смежные вопросы