2015-04-16 14 views
6

Çalıştığım gerektiğine inanıyoruz aşağıdaki hazırda kodu var, ancak bir hata atar:Kontrol Varlık eşlenen birimlerin listesine ise

@Override 
public List<RepositoryLink> getRepositoryLinks(final DugaUser user) { 
    Query query = sessionFactory.getCurrentSession() 
     .createQuery("from RepositoryLink link where :user in (link.dugaUsers)"); 
    query.setParameter("user", user); 
    return query.list(); 
} 
:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: ERROR: syntax error at or near "." Position: 503

ilgili kod şudur RepositoryLink şudur

:

@Entity 
@Table(name = "repository_links") 
public class RepositoryLink { 
    @Id 
    @GeneratedValue 
    private Integer id; 

    @OneToOne 
    @JoinTable(name = "repository_links_github_repositories", 
     joinColumns = {@JoinColumn(name = "github_repository_id", referencedColumnName = "id")}, 
     inverseJoinColumns = {@JoinColumn(name = "repository_link_id", referencedColumnName = "id")}) 
    private GithubRepository githubRepository; 

    @OneToMany 
    @JoinTable(name = "repository_links_duga_users", 
     joinColumns = {@JoinColumn(name = "duga_user_id", referencedColumnName = "id")}, 
     inverseJoinColumns = {@JoinColumn(name = "repository_link_id", referencedColumnName = "id")}) 
    private List<DugaUser> dugaUsers = new ArrayList<>(); 

    public Integer getId() { 
     return id; 
    } 

    public GithubRepository getGithubRepository() { 
     return githubRepository; 
    } 

    public void setGithubRepository(final GithubRepository githubRepository) { 
     this.githubRepository = githubRepository; 
    } 

    public List<DugaUser> getDugaUsers() { 
     return dugaUsers; 
    } 

    public void setDugaUsers(final List<DugaUser> dugaUsers) { 
     this.dugaUsers = dugaUsers; 
    } 
} 

ben muhtemelen bu kadar çalışmayı alabilir bana katılıyor, ama çalışmam için in sözdizimini alabilseydim daha iyi olacağını düşündüm, neden böyle çalışmıyor?

+0

'(link.dugaUsers içinde parantez kaldırmayı deneyin)'. EclipseLink örneğin hoşuna gitmiyor. – gtgaxiola

+0

@gtgaxiola Hiçbir şeyi değiştirmiyor – skiwi

+0

genellikle "in clause" in [Bu yanıt] 'da olduğu gibi adlandırılmış bir parametresi olduğunu gördüm (http://stackoverflow.com/questions/3126366/doing-an-in-query- Hazırda bekletme) Hazırda bekletme belgelerine baktığımda, çalıştığınız türde bir örnek göremiyorum. – gtgaxiola

cevap

5

Artık neden ayrıntılı çalışma yapamıyorum, neden hazırda beklemedeki dokümanları kontrol etmeden çalışıyorum. ; Sorgununuzdaki)

bunu kullanın: IN elements(link.dugaUsers)