Re[2]: Увы не работает ...
От: secam  
Дата: 16.05.05 12:10
Оценка:
Здравствуйте, Risotto, Вы писали:


S>>Обращаюсь к профессионалам, дайте пожалуйста альтернативное решение ...

S>>

R>Создаем запрос (в ejb-jar.xml):

R>
R><ejb-ql>
R>    SELECT MAX(s.id) FROM schema1 s
R></ejb-ql>
R>

R>ну а потом вызываем сопоставленный find() метод.

Идея великолепная ... единственная проблема EJB QL почему-то ругается на конструкцию MAX(..)
говорит дословно следующее:
Error parsing ejb-ql query: 'SELECT MAX(c.id) FROM ClientEJB AS c':
Expected 'object', path variable or 'distinct', not 'MAX' at position 8 ('MAX')

Дайте пожалуйста линк на какую — нибудь толковую доку по EJB QL, если есть. Буду очень признателен.

И в общем-то вопрос остается открытым ...

Единственное, что мне удалось узнать что есть встроенная возможность получать уникальный ключ у контейнера:

Для персистентности, управляемой контейнером, эти значения ключа могут генерироваться автоматически контейнером EJB. Чтобы использовать преимущества от этого свойства бин сущности должен удовлетворять следующим требованиям:
В дескрипторе развертывания класс первичного ключа определяется как java.lang.Object. Поле первичного ключа не задается.
В домашнем интерфейсе аргумент метода findByPrimaryKey должен быть java.lang.Object.
В классе бина сущности возвращаемый тип метода ejbCreate должен быть java.lang.Object.

В таких бинах сущностей значения первичного ключа находятся во внутреннем поле, которое доступно только контейнеру EJB. Вы не можете связать первичный ключ с персистентным полем или с любой другой переменной экземпляра. Но вы можете выбрать первичный ключ бина вызовом метода getPrimaryKey и вы можете найти бин вызовом его метода findByPrimaryKey.

Для меня это было новостью.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.