【发布时间】:2016-03-19 19:34:17
【问题描述】:
我有一个具有权限的用户(多对多关系):
@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”权限的用户)。
【问题讨论】:
-
我认为你的 JPA 映射是错误的。您在其中一个实体中使用 @ManyToMany 注释,但在另一个实体中没有。
-
这段代码来自 JHipster,所以我认为不是。
标签: java spring jpa spring-data spring-data-jpa