Присоединяйтесь в игровой среде - PullRequest
2 голосов
/ 16 марта 2012

Я никогда не использовал jpa, и я хотел бы спросить, есть ли соединение

если я сделаю это

String queryStringGet="SELECT c.* FROM Category c "+

"LEFT JOIN User us ON us.id = c.id "+

"+"WHERE c.user_id="+id;

List<Object[]> list = JPA.em().createNativeQuery(queryString).getResultList();

Работает, но выходит как объект, и я не знаю, как перечислить в представлении: (

Поскольку play.db.jpa.Model не поддерживает ON, как я могу выполнить объединение? и как мне перечислить объекты?

Спасибо

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

JPQL не поддерживает объединения. Здесь есть объяснение того, как это сделать .

И вы можете получить результаты в виде списка:

String hql = "SELECT c FROM Category c "
           + "LEFT JOIN User us WITH us.id = c.id "
           + "WHERE c.user_id= :userId";
Query query = JPA.em().createQuery(hql, Categories.class);
query.setParameter("userId", userId);
List<Category> categories = query.getResultList();
1 голос
/ 17 марта 2012

Поскольку вы используете собственный запрос, он будет работать правильно, если в вашей базе данных действует sql.

При использовании специального запроса этот код вернет список массива объектов с неявнымтип данных.Таким образом, если первый столбец, который вы возвращаете, это varchar, object [0] будет строкой.Вам придется сделать сопоставление для вашего объекта самостоятельно

    List<Category> categories = query.getResultList();
    Category cat = null;
    for (Object[] objects : categories ) {
        if (cat == null)
            cat = new Category();
        cat.name = (String) objects[0];
        ...
    }
1 голос
/ 16 марта 2012

Попробуйте прочитать это;)

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html

...