我有一个实体类,其中包含许多带有INNER JOIN<>的命名查询ON<>句子,当我尝试使用JUnit执行测试时,在内存H2数据库中,我得到了这个异常:
org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join!
查询工作正常,但似乎H2Dialect不支持Inner Join这种方式,只有这样:
INNER JOIN c.persona p
这是我的NamedQuery:
@NamedQuery(name = "name", query = "SElECT NEW MyObject(p.firstName, "
+ "p.lastName, , tp.otherName, p.id, s.description, en.name, et.name , et.number, e.firstName, "
+ "e.lastName, e.street, e.date ) "
+ "FROM TypeC c INNER JOIN c.typeP p " + "INNER JOIN TypeTP tp ON tp.code = p.codeTP "
+ "INNER JOIN TypeS s ON s.code = c.codeS "
+ "INNER JOIN TypeEt et ON et.code = c.codeET "
+ "INNER JOIN TypeEN en ON en.code = c.codeEN "
+ "INNER JOIN TypeI i ON i.code = c.codeI " + "INNER JOIN i.typeE e "
+ "WHERE c.number = :NUMBER " + "AND e.code = :CODE ")
我正在使用JPA。 谁能帮助我? 提前致谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
我已经发现什么出错了。 TypeS,TypeET和TypeEN需要包含在persistence.xml文件中的标记" persistence-unit"如
<class>co.com.myproject.persistence.entity.TypeS </class>
<class>co.com.myproject.persistence.entity.TypeET </class>
<class>co.com.myproject.persistence.entity.TypeEN </class>
并将必要的SQL代码用于创建和填充用于生成内存h2数据库的create.sql和data.sql文件中的表。