java - JPA spring boot 内部联接 - with-clause 引用了两个不同的 from-clause 元素错误

标签 java hibernate jpa spring-boot hql

我正在尝试在我的 JPA 存储库之一中使用内部联接进行选择

查询:

@Query(value = "select wm.WagerIdentification, wm.BoardNumber, wm.MarkSequenceNumber, wm.MarkNumber," +
        " pt.CouponTypeIdentification, pt.WagerBoardQuickPickMarksBoard " +
        "from WagerBoard wb " +
        "inner join wb.listOfWagerMarks wm on wb.WagerIdentification = wm.WagerIdentification and wb.BoardNumber = wm.BoardNumber and wb.GameIdentification = wm.GameIdentification and wm.meta_IsCurrent = 1 " +
        "inner join wb.poolgameTransaction pt on (wb.TransactionIdentification = pt.TransactionIdentification and pt.meta_IsCurrent = 1)" +
        "where wb.meta_IsCurrent = 1")
List<Object[]> findAllTest();

关系:

台球游戏交易

@OneToMany(mappedBy = "poolgameTransaction")
private List<WagerBoard> ListOfWagers = new ArrayList<>();

投注板

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns({
        @JoinColumn(name = "TransactionIdentification", insertable = false, updatable = false),
        @JoinColumn(name = "meta_CreatedDate", insertable = false, updatable = false)
})
private PoolgameTransaction poolgameTransaction;

@OneToMany(mappedBy = "wagerBoard")
private List<WagerBoardMarks> listOfWagerMarks;

WagerBoardMarks

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns({
        @JoinColumn(name = "BoardNumber", insertable = false, updatable = false),
        @JoinColumn(name = "GameIdentification", insertable = false, updatable = false),
        @JoinColumn(name = "WagerIdentification", insertable = false, updatable = false),
        @JoinColumn(name = "meta_CreatedDate", insertable = false, updatable = false)
})
private WagerBoard wagerBoard;

错误:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: with-clause referenced two different from-clause elements

最佳答案

我会将条件从 On.. 删除到 where 部分:

select wm.WagerIdentification, wm.BoardNumber, wm.MarkSequenceNumber, wm.MarkNumber," +
        " pt.CouponTypeIdentification, pt.WagerBoardQuickPickMarksBoard " +
        "from WagerBoard wb " +
        "inner join wb.listOfWagerMarks wm 
        "inner join wb.poolgameTransaction pt
where wm.meta_IsCurrent = 1 and wb.meta_IsCurrent = 1 

无论如何,其他依赖项都隐式嵌入到映射配置中。

关于java - JPA spring boot 内部联接 - with-clause 引用了两个不同的 from-clause 元素错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42410950/

相关文章:

java - 检查整数是否具有不同的数字 java

java - 使用priorityQueue实现具体的java MaxHeap

mysql - Spring Boot JPA saveAll() 插入数据库非常慢

java - 无法在 hibernate 状态下保存实体

java - 使用的表型 Spring Boot 的最大行大小

java - 了解命令模式以及为什么我们需要接口(interface)?

java - 如何在spring工具套件中安装petclinic

java - PostgreSQL 驱动程序 "Unable to load class "

java - Spring/Hibernate 添加一个在关闭 EntityManagerFactory 之前运行的关闭钩子(Hook)

java - 具有重复数据和列表的 JPA native 查询结果集映射