JPA弹簧引导内部连接 ​​- with-clause引用了两个不同的从句子元素错误 [英] JPA spring boot inner join - with-clause referenced two different from-clause elements error

查看:462
本文介绍了JPA弹簧引导内部连接 ​​- with-clause引用了两个不同的从句子元素错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在我的一个JPA仓库中选择一个内联接

查询:

  @Query(value =select wm.WagerIdentification,wm.BoardNumber,wm.MarkSequenceNumber,wm.MarkNumber,+ 
pt。 CouponTypeIdentification,pt.WagerBoardQuickPickMarksBoard+
from WagerBoard wb+
内部连接wb.listOfWagerMarks wm on wb.WagerIdentification = wm.WagerIdentification and wb.BoardNumber = wm.BoardNumber and wb.GameIdentification = wm .GameIdentification和wm.meta_IsCurrent = 1+
内连接wb.poolgameTransaction点对(wb.TransactionIdentification = pt.TransactionIdentification和pt.meta_IsCurrent = 1)+
其中wb.meta_IsCurrent = 1 )
List< Object []> findAllTest();

关系:
PoolgameTransactions

  @OneToMany(mappedBy =poolgameTransaction)
私人列表< WagerBoard> ListOfWagers = new ArrayList<>();

WagerBoard

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

@OneToMany(mappedBy =wagerBoard)
私人列表< 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;

错误

 引起:org.hibernate.hql.internal.ast.QuerySyntaxException:with-clause引用了两个不同于子句元素


解决方案

我会从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

其他依赖关系隐式嵌入映射配置。


I'm trying to select with a inner join in one of my JPA repositories

the query:

@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();

relations:

PoolgameTransactions

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

WagerBoard

@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;

the error:

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

解决方案

I would remove the condition from On.. to the where part:

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 

The other dependencies are implicitly embedded in the mapping configuration anyway.

这篇关于JPA弹簧引导内部连接 ​​- with-clause引用了两个不同的从句子元素错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆