java jpa 字段 关联_jpaQuery中查询字段是关联表的查询方法以及@JoinEntity(joinEntityAlias ="str")的作用和代码编写的规范...

实体类的参数

@JoinEntity(joinEntityAlias = T_DeviceMoxing_AlarmRule,...)的作用

课室类

@Entity

public class Classroom {

private int id;

private String name;

...

}

老师类

注意其中的静态str

@Entity

public class Teacher {

public static final String T_Classroom = "T_Classroom";

private int id;

private String name;

@JoinEntity(name = "id",joinEntityClass = Classroom.class,joinEntityAlias =T_Classroom)

private int classroomId;

@Transient

@FieldPath(name = "name",joinEntityClass = Classroom.class,joinEntityAlias = T_DeviceMoxing_AlarmRule)

private String classroomIdName;

...

}

查询实体

注意其中的,joinEntityAlias

@JoinEntity(mainEnityClass = Teacher.class,joinEntityClass = Classroom.class, mainFiledName = "classroomId",name = "id",fieldType = Integer.class)

public class QueryBean {

//根据课室名模糊查询

@Like

@FieldPath(joinEntityClass = Classroom.class,name = "name",joinEntityAlias = Teacher.T_Classroom)

private String classroomIdName;

//用到的包

import swallow.framework.jpaquery.repository.annotations.FieldPath;

import swallow.framework.jpaquery.repository.annotations.JoinEntity;

import swallow.framework.jpaquery.repository.annotations.Like;

//根据课室名称模糊查询配备的教师数量

SELECT count

FROM

Teacher teacher

LEFT JOIN Classroom T_Classroom

WITH T_Classroom .Id = teacher.classroom_id

WHERE T_Classroom.name LIKE ?

如果在查询实体中的去掉

joinEntityAlias = Teacher.T_Classroom

的话,那么生成的sql就会报错,找不到Classroom.name字段

SELECT count

FROM

Teacher teacher

LEFT JOIN Classroom T_Classroom

WITH T_Classroom .Id = teacher.classroom_id

WHERE Classroom.name LIKE ?

刚开始使用时觉得joinEntityAlias没什么用就省略了,觉得很多余,后来才知道原来是这么用的。而且不加会导致级联查询也会有问题,只要会debug这些都好解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值