Java Spring数据Jpa与不带@Query的多表联接
我是Spring boot的新手,尤其是Spring boot数据JPA 我想写不带@Query的JPA方法 我知道如何通过@Query进行选择 然而,关于纯数据JPA方法并没有太多的内容 像 在Something和Something 2 Integer用户ID之间的整数FindBylevelPoints 这是存储点的点实体 层次实体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 @
@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")