在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.javapackage 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
版權宣告:本文為博主原創文章,轉載請附上博文連結!