2015-03-04 2 views
0

Может ли кто-нибудь помочь мне с запросом SELECT в этом соединении ManyToMany? Я хочу выбрать зарегистрированных пользователей, указанных id пользователя в моем классе EJB.JPA выбрать запрос на ManyToMany

сущность курса фрагмент

 Public class Course implements Serializable { 
    ... 
     @Id 
     @GeneratedValue(strategy=GenerationType.IDENTITY) 
     private long id; 

      @ManyToMany 
     @JoinTable(name="course_user", joinColumns={@JoinColumn(name="course_id", referencedColumnName="id")}, 
      inverseJoinColumns={@JoinColumn(name="user_id", referencedColumnName="id")}) 
     private List<User> enrolledStudents; 
    ... 

Entity пользователя фрагмент

public class User implements Serializable { 
    private static final long serialVersionUID = 1L; 
... 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private long id; 

    @ManyToMany(mappedBy="enrolledStudents") 
    private List<Course> enrolledCourses; 
... 

Например это мой другой запрос на выборку в EJB, но это не на ManyToMany. Я хочу что-то подобное, но не могу понять, как ..

public List<Course> findOwndedCourses(long id) { 
    TypedQuery<Course> query = entityManager.createQuery("SELECT c FROM Course c WHERE c.owner.id = :ownerId", Course.class); 
    query.setParameter("ownerId", id); 
    return query.getResultList(); 
} 

Благодарим вас за помощь ребятам !!

+0

Что вы имеете в виду «выберите зачисленных пользователей, указанные идентификатор пользователя «? Вы хотите выбрать пользователей для данного идентификатора курса? –

+0

Привет, Дэвид .. Я говорю об этом /** * Найти курсы, где зарегистрирован пользователь с идентификатором (userId). * параметр userId, идентификатор пользователя. * возвращает список зарегистрированных пользователей курсов. */ Список findEnrolledCourses (long userId); –

ответ

1

Этот запрос должен это сделать:

select c FROM Course c JOIN c.enrolledStudents u WHERE u.id = :userId 

или это один может быть проще (объединение неявно):

FROM Course c WHERE c.enrolledStudents.id = :userId 
Смежные вопросы