如何获得许多要依赖的实体



这是我需要通过当前用户ID获得的项目实体:

@Entity
@Table(name = "project")
public class Project implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  @ManyToMany
  @JoinTable(name = "project_user",
           joinColumns = @JoinColumn(name="projects_id", referencedColumnName="id"),
           inverseJoinColumns = @JoinColumn(name="users_id", referencedColumnName="id"))
  private Set<User> users = new HashSet<>();
}

这是用户实体,我将使用它来获取产品:

@Entity
@Table(name = "jhi_user")
public class User extends AbstractAuditingEntity implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  @ManyToMany(mappedBy = "users")
  private Set<Project> projects = new HashSet<>();
}

存储库类扩展了JparePository类。我如何获得当前用户ID的所有项目?

我可以使用的本机SQL语句是:

SELECT * FROM project WHERE id IN (SELECT projects_id FROM project_user WHERE users_id = ?);

它应该和这个...

一样简单
User user = userRepository.findById(100L);
Set<Projects> projects = user.getProjects();

由于您的映射,JPA会照顾其余的。

最新更新