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