2

JPA での多対 1 の関係に関して、1 つの問題に直面しています。現時点での問題は、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;

2 番目のエンティティは次のとおりです。

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基づいてからデータを取得するにはどうすればよいでしょうか?

4

1 に答える 1

1

エンティティにフィールドはありませんcategoryIDSkills

categoryのフィールドを使用するだけQueryです:

Query q = em .createQuery("SELECT s.longDescription from Skills s, Category c " +
                          "WHERE s.category =  c");
于 2013-06-30T00:27:28.993 に答える