1. 程式人生 > >在jpa的JpaRepository需要對符合主鍵@EmbeddedId 中的一個欄位進行查詢的用法

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