2013-06-30 4 views
2

У меня возникла одна проблема относительно отношений много к одному в JPA. Проблема, которую я получаю в этот момент, - получить данные, используя предложение where.Многие к одному поисковому запросу

Skills класс:

@Id 
    private long skillsID; 
    @Basic 
    private String longDescription; 
    @Basic 
    private String shortDescription; 
    @Basic 
    private String colOrder; 
    @Basic 
    private String isActive; 
    @Basic 
    private String changeDate; 
    @ManyToOne(fetch=FetchType.EAGER) 
    private Category category; 

второй субъект:

Category класс:

@Id 
    private long categoryID; 
    @Basic 
    private String name; 
    @Basic 
    private String colOrder; 
    @Basic 
    private String isActive; 
    @Basic 
    private String changedDate; 
    @OneToMany(mappedBy = "category") 
    private Collection<Skills> skills; 

Таким образом, в JPA, когда я преобразования приложений следующий код, он бросить меня исключение, как:

java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 

Exception Description: Problem compiling [SELECT s.longDescription from Skills s, Category c where s.categoryID = c.categoryID]. 

[57, 69] The state field path 's.categoryID' cannot be resolved to a valid type. 

JPA Кодекс:

Query q = em .createQuery("SELECT s.longDescription from Skills s, Category c "+ 
"where s.categoryID = c.categoryID"); 

Итак, как я могу получить данные из Skills в Category на основе внешнего ключа?

+0

Там нет необходимости орать на нас. –

ответ

1

Не найдено полей categoryID в Skills объектов.

Просто используйте это category поле в Query:

Query q = em .createQuery("SELECT s.longDescription from Skills s, Category c " + 
          "WHERE s.category = c"); 
Смежные вопросы