Java JPQL-许多自参考
我在使用JPQL进行查询时遇到问题。我有一张桌子,上面有很多对很多:Java JPQL-许多自参考,java,sql,jpa,playframework,jpql,Java,Sql,Jpa,Playframework,Jpql,我在使用JPQL进行查询时遇到问题。我有一张桌子,上面有很多对很多: @Entity @Table(name = "item") public class Item extends BaseModel implements Serializable { @Column(name = "id") public INteger id; @ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER) pub
@Entity
@Table(name = "item")
public class Item extends BaseModel implements Serializable {
@Column(name = "id")
public INteger id;
@ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
public Set<Item> itemsRelated;
}
或
从itemsRelated为空的项目中选择*
但它却抛出了这样一个例外:
play.exceptions.JavaExecutionException:从Item where ItemsRelate=null order by createDate desc执行查询时出错:'where子句'中的未知列'qualified'
atplay.mvc.ActionInvoker.invoke(ActionInvoker.java:237)
在Invocation.HTTP请求时(播放!)
有人能帮我吗
更新:
Java调用:
Item.find(query.toString()+" order by createDate desc").fetch(page, itemsPerPage);
此时,“查询”有“itemsRelated is null”我不是jpql专家,但语法
为null
且不为null
应该可以工作。
你试过了吗
Select * from Item where itemsRelated is null
itemsRelated
是一个集合,您必须检查集合的大小-不要期望它为null
。试一试
select i from Item i where i.itemsRelated is empty
看
编辑:使用别名完成查询成功
解决方案是使用内部连接,让se:
id NOT IN (SELECT DISTINCT(i.id) FROM Item i INNER JOIN i.itemsRelated ii)
结果是:
Select * from Item where id NOT IN (SELECT DISTINCT(i.id) FROM Item i INNER JOIN i.itemsRelated ii)
谢谢大家 可以用select语句发布java代码段吗?现在错误:itemsRelated未映射[来自models.aquilesModels.entity.Item,其中itemsRelated不是空的order by createDate desc]
Select * from Item where id NOT IN (SELECT DISTINCT(i.id) FROM Item i INNER JOIN i.itemsRelated ii)