栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用联接定义JPA存储库查询

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用联接定义JPA存储库查询

您遇到此问题的原因有两个。

  • JPQL查询无效。
  • 您尚未在基础JPQL查询可以利用的实体之间创建关联。

在JPQL中执行联接时,必须确保尝试联接的实体之间存在基础关联。在您的示例中,您缺少User和Area实体之间的关联。为了创建此关联,我们必须在User类内添加Area字段并建立适当的JPA
Mapping。我已在下面附加了User的来源。(请注意,我已将映射移至字段)

User.java

@Entity@Table(name="user")public class User {    @Id    @GeneratedValue(strategy=GenerationType.AUTO)    @Column(name="iduser")    private Long idUser;    @Column(name="user_name")    private String userName;    @oneToOne()    @JoinColumn(name="idarea")    private Area area;    public Long getIdUser() {        return idUser;    }    public void setIdUser(Long idUser) {        this.idUser = idUser;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public Area getArea() {        return area;    }    public void setArea(Area area) {        this.area = area;    }}

一旦建立了这种关系,就可以在@Query声明中引用area对象。@Query批注中指定的查询必须遵循正确的语法,这意味着您应省略on子句。请参阅以下内容:

@Query("select u.userName from User u inner join u.area ar where ar.idArea = :idArea")

在查看您的问题时,我还使用户和区域实体之间的关系成为双向的。这是Area实体建立双向关系的来源。

Area.java

@Entity@Table(name = "area")public class Area {    @Id    @GeneratedValue(strategy=GenerationType.AUTO)    @Column(name="idarea")    private Long idArea;    @Column(name="area_name")    private String areaName;    @oneToOne(fetch=FetchType.LAZY, mappedBy="area")    private User user;    public Long getIdArea() {        return idArea;    }    public void setIdArea(Long idArea) {        this.idArea = idArea;    }    public String getAreaName() {        return areaName;    }    public void setAreaName(String areaName) {        this.areaName = areaName;    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573736.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号