2013-06-11 8 views
0

Я начинаю в спящем режиме и много читаю, но застрял в этой точке. В моем JSF приложении, которое я реализующий hibertate, у меня есть этот запрос SQL, который работает в моей базе данных:sql-запрос в спящий режим

SELECT * 
FROM CourseProduct 
INNER JOIN Course 
ON CourseProduct.number=Course.number 
inner join Product 
on CourseProduct.product=Product.product; 

Я пытаюсь сделать то же самое с Hibernate для моего приложения JSF. До сих пор я придумал:

List results = session.createCriteria(Course.class) 
    .setFetchMode("product", FetchMode.JOIN) 
    .setFetchMode("number", FetchMode.JOIN) 
    .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) 
    .list(); 

Это правильно или совершенно неправильно? Также как мне получить доступ к полям из результатов (если мне это нужно, поскольку hibernate заполняет классы для меня)? Похоже, что результаты, которые я получаю, - это только таблица курсов, значение первичного ключа в продукте, но не другие 2 поля в таблице Product.

EDIT

Я предполагаю, что я решил свою собственную проблему. Похоже, что приведенный выше код верен, я просто не понимал, что для доступа к классу Product я должен был получить к нему доступ из класса Set in the Course! Я просто использовал итератор для получения данных, которые мне нужны в методе get для набора продуктов в классе курса.

ответ

0

Я думаю, я решил свою проблему. Похоже, что приведенный выше код верен, я просто не понимал, что для доступа к классу Product я должен был получить к нему доступ из класса Set in the Course! Я просто использовал итератор для получения данных, которые мне нужны в методе get для набора продуктов в классе курса.

Обновление: Я действительно решил проблему. Я просто избавился от спячки. SQL-запрос работает отлично, получил мои данные с помощью Perpared Statement и набора результатов, используя обычный старый способ (java.sql.DriverManager). По какой-то причине драйвер hibernate даже не хотел использовать мой оператор как родной SQL (продолжал давать мне исключение, пытающееся преобразовать Integer). Я googled проблема, и они говорят, что это ошибка в спящем режиме!

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