2014-08-28 2 views
0

У меня есть таблица пользователиКак сделать Регистрацию запроса на Mysql выборки в JPQL

Id(key) | username | some other cols...n 

и стол лексемы:

userID, Token (k) 

идентификатор пользователя в токенах определяются как внешний ключ из users.id.

Что я хочу сделать, так это уметь: Учитывая Tokens.token, получите информацию о Col из Пользователей.

для MySQL команды в SQL, как например:

select a.* from users a left join tokens b on a.User_Id = b.userId and b.userId = 1; 

(я не знаю, если выше является оптимальным ... но она возвращает то, что я хочу)

Как бы я повторить, что в JPQL ?

Простой выбор выборки команды я знаком с собой (кроме используя встроенный в один)

String qlString = "Select p from Tokens p WHERE p.token=:token"; 
     TypedQuery<Tokens> query = this.entityManager.createQuery(qlString,Tokens.class).setParameter("token", token); 
+0

Вам нужно что-то вроде 'Выбор р форм лексем присоединиться p.user', добавить entitties для лучшего ответа –

+0

@AVolpe предположим, мои объекты отображаются как выше. . класс Пользователи имеют Int Id и класс Tokens имеет int userID – nate

ответ

0

При использовании JPA, вы не возражаете для таблицы и столбцов, можно использовать и Entities Отношения, запрос должен быть:

select u.info from User u join u.tokens t where t.token = :token 

Это предполагает:

@Entity class User { 
    @OneToMany List<Token> tokens; 
    String info; 
} 

@Entity class Token { 
    String token; 
} 

Вы начинаете User, затем перейдите с вашим атрибутом tokens к объекту Token и фильтруйте для атрибута Token.

Для получения списка используйте:

List<String> infos = entityManager.createQuery(YOUR_QUERY).list(); 
Смежные вопросы