java - Spring boot JPA中不相关实体的加入查询

标签 java hibernate spring-boot spring-data-jpa

我正在尝试对不相关的实体 A 和 B 编写如下查询

Select a.x,a.y,a.z FROM A a ,B b Where
b.Parameter_Name='APPLICABLE_RULE_TYPE' And b.Parameter_KEY='MC' AND 
b.Parameter_Value=a.rule_type And a.Rule_Status='ON' Order By Rule_Priority;

我无法弄清楚应该如何在 Spring boot 应用程序的 Repository 类中编写它。

有人可以建议一种方法吗

提前致谢。

编辑:

我已经尝试过将其作为 native 查询,例如

@Query(value = "Select Rule_Id, Rule_Sql,S_System,S_Entity, s_table_name,Rule_Sql_Type "
        + "FROM rule_master TRM ,T_SYSTEM_CONFIG TSC  Where"
        + " Tsc.Parameter_Name='APPLICABLE_RULE_TYPE' "
        + " And Tsc.Parameter_KEY= :systemType"
        + " AND Tsc.Parameter_Value=trm.rule_type  "
        + " And Rule_Status='ON'"
        + " Order By Rule_Priority", nativeQuery = true)
public List<RuleMaster> findByRuleStatus(@Param("systemType" String systemType);

但出现此错误

o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 17006, SQLState: null
o.h.engine.jdbc.spi.SqlExceptionHelper   : Invalid column name
org.springframework.orm.jpa.JpaSystemException: could not execute query; nested exception is org.hibernate.exception.GenericJDBCException: could not execute query

最佳答案

我能够通过使用 native 查询本身来解决这个问题。

该错误是因为我只从表中选择了部分列。相反,我使用了以下查询,效果很好:

@Query(value = "Select * "
    + "FROM rule_master TRM ,T_SYSTEM_CONFIG TSC  Where"
    + " Tsc.Parameter_Name='APPLICABLE_RULE_TYPE' "
    + " And Tsc.Parameter_KEY= :systemType"
    + " AND Tsc.Parameter_Value=trm.rule_type  "
    + " And Rule_Status='ON'"
    + " Order By Rule_Priority", nativeQuery = true)
public List<RuleMaster> findByRuleStatus(@Param("systemType" String systemType);

关于java - Spring boot JPA中不相关实体的加入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41155769/

相关文章:

java - AsyncAppender 在写入之前不会等待缓冲区已满

java - 为什么 CTE 查询在 Hibernate 中不起作用?

java - 尝试用java创建一个菜单来计算和显示有关圆的信息

java - Sonarqube 后台任务永远运行

java - 寻找一种从 Java 中的给定 SQL 查询创建动态 SQL 的方法

hibernate - 在 Spring 3 中使用 Hibernate

java - 使用相同的 URL 登录并检索数据

java - Web 服务器启动失败。端口已在使用错误。但应用程序仍在运行

java - Spring Boot 延迟 Flyway 初始化循环依赖

java - 如何在 Java 中将分数格式的字符串转换为小数或 float ?