我对Spring-Data相当陌生(直到最近才通过HQL使用Hibernate)并且我无法绕过以下内容:
我有一个 AbstractUser 实体,由用户和管理员分组。我还有产品实体,与项目的关系为1-n。我的用户被分配了对特定项目的访问权限,因此用户具有项目的1-n。另一方面,管理员管理整个产品行,因此管理员在产品中有1-n。
现在,我正在制作一个显示所有用户的表格(用户和管理员)。我需要能够通过特定项目对其进行过滤。这意味着对于给定的项目,我需要显示分配给它的所有用户(简单)和管理给定的所有管理员 项目的父产品(不那么简单)。我还需要此表格为可分页。
所以我理解我的UserRepository需要实现JpaSpecificationExecutor,我需要编写一个规范,以便调用UserRepository.findAll(projectUsersSpecification(projectFilter),可分页)的内容,但我不知道如何写规格!我在网上寻找过例子,但我发现的任何内容都不包括我的具体情况!
非常感谢任何帮助!
非常感谢,
AW
这里有一些代码:
@MappedSuperclass
public abstract class PersistentEntity implements Serializable {
@Id
@GeneratedValue
private Long id;
... getter/setter equals & hashcode ...
}
@Entity
@Inheritance
@DiscriminatorColumn(name="TYPE")
@Table(name="User")
public class AbstractUser extends PersistentEntity {
public enum Profile {
USER,
ADMIN;
}
@Column
@Enumerated(EnumType.STRING)
private Profile profile;
...
}
@Entity
@DiscriminatorValue("USER")
public class User extends AbstractUser {
@ManyToMany(fetch = FetchType.EAGER)
private List<Project> projects;
}
@Entity
@DiscriminatorValue("ADMIN")
public class Admin extends AbstractUser {
@ManyToMany(fetch = FetchType.EAGER)
private List<Product> products;
}
@Entity
@Table
public class Product extends PersistentEntity {
@OneToMany(fetch = FetchType.EAGER)
private List<Project> projects;
}