当前位置: 首页 > 知识库问答 >
问题:

Springjpa查询SQLGrammarExctive上的加入@ManyTo众多

夏侯弘量
2023-03-14

在我的Spring Boot应用程序中有WayPOJO,下面是它的样子:

public class Way {
    @Id
    private Long wayID;
    @ToString.Exclude
    @JsonIgnore
    @ManyToMany(fetch = FetchType.LAZY,cascade=CascadeType.ALL)
    private List<Relation> relations=new ArrayList<>();

现在我想选择所有与给定值相关的方式relationIDRelationshipPOJO的成员。

所以这是我的查询@Query("从Way w连接关系中选择w,其中relations.relationID=?1")列表

但错误似乎是在我的JOIN部分,它崩溃,并说:org.springframework.dao.InvalidDataAccessResourceUsageExctive:无法准备语句;SQL[选择way0_. wayid作为wayid1_5_way0_内连接关系relation1_在哪里relation1_。

我如何解决这个问题?

我也试过这个:

    @Query("select way from Way.relations full join Way.relations rel where rel.relationID=?1")
    List<Way> selectAllWaysByRelationID(Long relationID);

这也是:

    @Query("select way from Way way join Way.relations rel where rel.relationID=?1")
    List<Way> selectAllWaysByRelationID(Long relationID);

共有1个答案

柯建修
2023-03-14

当使用JOIN时,需要将Way的别名与relations字段一起使用,就像这样,w.relations r而不是Way。关系

完整的查询如下:

@Query("select w from Way w join w.relations r where r.relationID=?1")
List<Way> selectAllWaysByRelationID(Long relationID);
 类似资料:
  • 我试图在@query(“…”)中翻译SQL本机查询用法,native=true)Spring数据Jpa注释,用于同一注释中的JPQL查询用法。SQL查询: 我使用的是Spring投影接口,这就是为什么列的别名是这样命名的。 现在我想用JPQL得到完全相同的结果——项目列表。我尝试的是这样的: 这里是翻译SQL从JPQL。 这里的问题是,它返回@ManyToMany relations(visit_

  • 问题内容: 假设我们有两种索引类型:成员和餐厅。两者都包含城市属性。 我想过滤成员(例如按名称),并希望在结果中包括成员所在城市/城市的餐馆名称列表。 是否可以仅使用一个ES查询来执行此操作?我猜它应该类似于数据库联接。 谢谢。 问题答案: ES没有联接的概念。这是因为它是索引而不是关系数据库。最好打两个电话。一个获取会员的文件,然后另一个获取餐厅。 除非您有特殊情况,否则这仍然应该非常有效。

  • 目前我有以下查询: 产出: 它可以工作,但在加入前限制注释表。结果是,它选择前5个注释并映射它。id为5的所有评论将被忽略。 谢谢

  • 问题内容: 有什么办法(查询)在ElasticSearch中加入以下2个JSON 以上2种JSON在Logstash中以2种不同类型处理(输入),因此它们的索引在Elasticsearch中归档的不同“类型”中可用。 我想要的是在product_id字段上加入2个JSON。 问题答案: 当您说加入时,这取决于您的打算。Elasticsearch与支持表之间的JOIN的常规数据库不同。它是一个文本搜

  • 问题内容: 一个供您所有MySQL专家使用的技巧:-) 我有以下查询: 订单表= 80,900行 产品表= 125,389行 o.id和p.order_id已建立索引 该查询大约需要6秒钟才能完成-太长了。我正在寻找一种优化它的方法,可能使用临时表或其他类型的联接。恐怕我对这两个概念的理解还很有限。 谁能建议我优化此查询的方法? 问题答案: 首先,我将使用其他样式的语法。 已经有20年的睡眠时间了

  • 我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?