Java Spring数据Jpa与不带@Query的多表联接

Java Spring数据Jpa与不带@Query的多表联接,java,spring,spring-boot,jpa,Java,Spring,Spring Boot,Jpa,我是Spring boot的新手,尤其是Spring boot数据JPA 我想写不带@Query的JPA方法 我知道如何通过@Query进行选择 然而,关于纯数据JPA方法并没有太多的内容 像 在Something和Something 2 Integer用户ID之间的整数FindBylevelPoints 这是存储点的点实体 层次实体 @Entity @Table(name = "level", schema = "public") public class Level { @Id @

我是Spring boot的新手,尤其是Spring boot数据JPA

我想写不带@Query的JPA方法

我知道如何通过@Query进行选择 然而,关于纯数据JPA方法并没有太多的内容 像

在Something和Something 2 Integer用户ID之间的整数FindBylevelPoints

这是存储点的点实体

层次实体

 @Entity

 @Table(name = "level", schema = "public")
  public class Level {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "level_id", nullable = false)
private Integer levelId;

@Column(name = "user_id", nullable = false)
private Integer userId;

@Column(name = "level_type_id", nullable = false)
@JoinColumn(name ="level_type_id")
private Integer levelTypeId;


@Column(name = "reg_date", nullable = false)
private Date regDate;
级别类型为4类1-青铜/2-银/3-金/4-铂 存储点时,检查i级别类型

这就是我提出的问题

从level\u type ult中选择ult.level\u type\u id,其中选择Summap.point 从级别ull开始,指向上,级别Ul类型ult 其中,ull.level_type_id=ult.level_type_id,ull.user_id=up.user_id,且在ult.level_起点和ult.level_终点之间的up.user_id=73

结果是级别类型为整数形式

我想以JPA的身份提出这个问题 @查询X

像这样 @存储库

 public interface LevelTypeRepository extends 
JpaRepository<LevelType,Integer> {

Integer findByLevelPointMaxBetweenLevelPointMinAndLevelPointMax(Integer 
userId);
}

但是它不起作用,不知道如何使用一个参数连接三个表 此外,参数user\u id在level\u start\u point和level\u end\u point之间


很难通过JPA表达吗?

数据库是否具有这种连接关系,即表之间的数据库中是否存在外键主键关系?如果是,则无需使用@Query注释即可完成。若并没有,JPA将不会自己连接表,因此需要一个自定义查询,并且@query标记是必需的。

是的,并没有@query是不可能的

您必须选择JPA QL或HQL

它不使用直接数据库表,而是使用与数据库表映射的Java实体类

您在查询中使用的表名是错误的

使用实体类名而不是表名,并使用实体属性的值而不是表的列名

比如说

@Query("SELECT l.levelId FROM Level l where l.userId = :uid")
@Query("SELECT l.levelId FROM Level l where l.userId = :uid")