Извлечение записей из базы данных с использованием Hibernate - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть класс Trade и подкласс Operation. Они отображаются в базе данных. Поэтому, когда я делаю:

trades = session.createQuery("from Trade").list() 

Я получаю список торговых записей и могу получить доступ к операциям для определенной сделки через мой торговый экземпляр.

Однако, когда я делаю:

trades = session.createQuery("
    from Trade as trade
    inner join trade.operations as operation
    with to_char(operation.datetime, 'yyyyMMdd') =  to_char(sysdate, 'yyyyMMdd')
    order by operation.datetime"
).list();

Я получаю массив объектов, где каждый элемент содержит экземпляр операции и сделки.

Как я могу получить записи в виде массива сделок (аналогично первому варианту) с условиями (аналогично второму варианту)?


Я пытался: выбрать сделку из Trade как внутреннее торговое объединение trade.operations как операцию с ордером to_char (operation.datetime, 'yyyyMMdd') = to_char (sysdate, 'yyyyMMdd') по operation.datetime

Это сработало, спасибо javatestcase. Однако, когда я зацикливаю trade.operations, я получаю сделки, которые на сегодня содержат какие-либо операции, но я также получаю все операции для этой сделки, даже если это операция другого дня. Так что это не удовлетворяет условию.

Есть подсказка?

Заранее спасибо !!

1 Ответ

1 голос
/ 06 февраля 2012

trade.operations всегда содержит все операции для этой сделки.hibernate не даст вам сделок с частично инициализированной дочерней коллекцией, потому что он нарушает отслеживание изменений, а также приводит ко многим путаницам в будущем.Поэтому лучшее, что можно сделать в спящем режиме, - это предоставить вам пары сделок и соответствующие операции.Я хотел бы создать класс, содержащий все необходимые вам свойства из операции торговли и сопоставления, и использовать AliasToBeanTransformer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...