【发布时间】:2013-06-27 11:27:32
【问题描述】:
我在 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 获取数据?
【问题讨论】:
-
没有必要对我们大喊大叫。
标签: java jakarta-ee jpa persistence many-to-one