【发布时间】:2015-09-12 04:54:07
【问题描述】:
我正在使用带有 GlassFish 4.1 Server 的 Java EE7 来构建一个系统,基本上您可以在其中发布想法,并且每个想法都可能有标签。 我已将实体 Idea 声明为:
@Entity
@Table(name = "IDEAS")
public class Idea implements Serializable {
// Id, description, etc.
@ElementCollection
private List<String> tags;
// Getters, Setter, etc.
}
阅读JPA: Query an embeddable List inside an entity后,我尝试通过以下方式通过Tag查找:
public List<Idea> getIdeasWithTag(String tag) {
String queryStr = "select ideatags from Idea i "
+ "inner join i.tags ideatags "
+ "where ideatags.tags = :pTag";
Object res = em.createQuery(queryStr)
.setParameter("pTag", tag)
.getResultList();
return (List<Idea>) res;
}
但我收到了一个 TransactionRolledbackLocalException,原因是:
原因:java.lang.IllegalArgumentException:在 EntityManager 中创建查询时发生异常: 异常描述:编译问题[从idea i 中选择ideatags 加入i.tagsideatags whereideatags.tags = :pTag]。 [61, 74] 状态字段路径 'ideatags.tags' 无法解析为有效类型。
感谢任何帮助,在此先感谢!
【问题讨论】:
-
您的情况与链接的帖子不同...您的列表是字符串,而不是可嵌入的。因此,您的 JPQL “ideatags.tags”完全没有意义。那么您是否要查找包含特定“标签”的所有 Idea 对象?
-
哦,谢谢(我是 JEE 和 JPQL 的新手)。确切地说,我想获取包含该“标签”的所有 Idea 对象
标签: java jakarta-ee jpa jpql entities