我有一个具有权限的用户(多对多关系):
@Entity
@Table(name = "user")
public class User {
@JsonIgnore
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "user_authority",
joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name")})
private Set<Authority> authorities = new HashSet<>();
}
@Entity
@Table(name = "authority")
public class Authority implements Serializable {
@Id
@Column(length = 50, nullable = false)
private String name;
}
Liquibase(没有用户,他只有一个 id):
<createTable tableName="authority">
<column name="name" type="varchar(50)">
<constraints primaryKey="true" nullable="false"/>
</column>
</createTable>
<createTable tableName="user_authority">
<column name="user_id" type="bigint">
<constraints nullable="false"/>
</column>
<column name="authority_name" type="varchar(50)">
<constraints nullable="false"/>
</column>
</createTable>
<addPrimaryKey columnNames="user_id, authority_name" tableName="user_authority"/>
...
我必须获取所有用户权限,这等于某个名称。例如,我必须获取所有管理员(具有权限“ROLE_ADMIN”的用户)。
最佳答案
没有自定义查询,这可以工作:
List<Authority> admin_authorities = authorityRepository.findByName("ROLE_ADMIN");
List<User> admins = userRepository.findByAuthoritiesIn(admin_authorities);
关于java - Spring JPA 获取ManyToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36106225/