在jpa的JpaRepository需要对符合主键@EmbeddedId 中的一个字段进行查询的用法

在jpa的JpaRepository需要对符合主键@EmbeddedId 中的一个字段进行查询的用法:

在JpaRepository Interface中使用findByIdRoleId 这样的语法。jpa会自动生成正确的sql语句。

例子:

1.pojo  类 

RoleMenu.java

package com.ninelephas.whale.pojo;
 
import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;
 
 
/**
 * The persistent class for the role_menu database table.
 * 
 */
@Entity
@Table(name="role_menu")
@NamedQuery(name="RoleMenu.findAll", query="SELECT r FROM RoleMenu r")
public class RoleMenu implements Serializable {
	private static final long serialVersionUID = 1L;
 
	@EmbeddedId
	private RoleMenuPK id;
 
	@Column(name="created_by")
	private String createdBy;
 
	。。。
 
}


2.复合主键类

RoleMenuPK.java

package com.ninelephas.whale.pojo;
 
import java.io.Serializable;
import javax.persistence.*;
 
/**
 * The primary key class for the role_menu database table.
 * 
 */
@Embeddable
public class RoleMenuPK implements Serializable {
	//default serial version id, required for serializable classes.
	private static final long serialVersionUID = 1L;
 
	@Column(name="menu_id")
	private String menuId;
 
	@Column(name="role_id")
	private String roleId;
 
	public RoleMenuPK() {
	}
	public String getMenuId() {
		return this.menuId;
	}
	public void setMenuId(String menuId) {
		this.menuId = menuId;
	}
	public String getRoleId() {
		return this.roleId;
	}
	public void setRoleId(String roleId) {
		this.roleId = roleId;
	}
 
	public boolean equals(Object other) {
		if (this == other) {
			return true;
		}
		if (!(other instanceof RoleMenuPK)) {
			return false;
		}
		RoleMenuPK castOther = (RoleMenuPK)other;
		return 
			this.menuId.equals(castOther.menuId)
			&& this.roleId.equals(castOther.roleId);
	}
 
	public int hashCode() {
		final int prime = 31;
		int hash = 17;
		hash = hash * prime + this.menuId.hashCode();
		hash = hash * prime + this.roleId.hashCode();
		
		return hash;
	}
}

 

3.JpaRepository 继承接口

@Repository("com.ninelephas.whale.repository.IRoleMenuRepository")
public interface IRoleMenuRepository extends JpaRepository<RoleMenu, RoleMenuPK>, PagingAndSortingRepository<RoleMenu, RoleMenuPK>  {
    
 
    public List<RoleMenu> findByIdRoleId(String roleId);
 
}


JpaRepository只要定义 

public List<RoleMenu> findByIdRoleId(String roleId);

Id - is the  @EmbeddedId in RoleMenu. 

RoleId is an attribute within RoleMenuPK

这样jpa就会自动生成对role_menu中的复合主键中的role_id 进行查询的sql语句


--------------------- 
作者:remote_roamer 
来源:CSDN 
原文:https://blog.csdn.net/remote_roamer/article/details/52706196 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值