我正在使用spring啓動數據jpa 1.4,我對它很陌生。 我的表格定義是here。它非常簡單,有2個表(組和用戶)。內部加入春季啓動數據jpa
的組表包含GROUP_ID(主鍵),組名,group_active(值= Y/N)。 組表可理想地具有僅一排,其是具有group_active爲「Y」,其餘應該有「N」
的用戶表包含的user_id(主鍵),USER_NAME,GROUP_ID(外國從鍵組)。
以下是我的實體類
組:
@Entity
@Table(schema = "HR", name = "GROUPS")
public class Group {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "GROUP_ID")
private Long id;
@Column(name = "GROUP_NAME")
private String name;
@Column(name = "GROUP_ACTIVE")
private String active;
用戶:
@Entity
@Table(schema = "HR", name = "USERS")
public class User {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "USER_ID")
private Long id;
@Column(name = "USER_NAME")
private String name;
@Column(name = "GROUP_ID")
private Long groupId;
@ManyToMany
@JoinTable(
schema = "HR",
name = "GROUPS",
joinColumns = {@JoinColumn(table = "GROUPS", name = "GROUP_ID", insertable = false, updatable = false)},
inverseJoinColumns = {@JoinColumn(table = "USERS", name = "GROUP_ID", insertable = false, updatable = false)}
)
@WhereJoinTable(clause = "GROUP_ACTIVE='Y'")
private List<Group> group;
庫類:
public interface UserRepository extends CrudRepository<User, Long>{
List<User> findByName (String name);
}
查詢:這是我想要執行的查詢,這是一個簡單的內連接。
SELECT U.*
FROM HR.USER U, HR.GROUP G
WHERE U.GROUP_ID=G.GROUP_ID
AND G.GROUP_ACTIVE='Y'
AND U.USER_NAME=?
什麼是寫@JoinTable正確的方式或@JoinColumn這樣,我總是回到屬於名爲活性基團一個用戶?
您能夠運行'的findAll()'在用戶表? –