Spring JPA。仅调用 @ManyToMany 而不是整个对象
Spring JPA. Call @ManyToMany ONLY and not the whole object
假设我有这样的东西:
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "assigned_tasks", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "task_id", referencedColumnName = "id"))
private Set<Task> assignedTasksDoer = new HashSet<>();
在我的“用户”实体中 class。
当我获取用户时,它会为我提供所有详细信息。那太好了。没有任何错误。
但是我怎样才能把它分成几个部分,例如,当我只想获取用户的“assigned_tasks”时,我可以从 UserController 以外的其他控制器获取它,即 AssignedTasksController?
如果有人感兴趣,我愿意提供更多细节。
在我开始这种面向对象的方法时请帮助我!!是的,使用 jpa、实体、DAO 和存储库很棒,同时让 Spring 处理幕后的所有事情也很棒,但是它有限制吗?我能否完全避免编写 sql 查询和准备语句或其他我必须求助于它的情况?
TL;DR: 用户实体也有其他字段。我想制作一个控制器路由,每次只获取用户分配的任务,而不是整个对象。我该怎么做?
我假设您正在使用 Spring Data JPA。在那种情况下,您很可能已经有了类似 UserRepository extends JpaRepositry<User, Long>
的东西(假设主键是 Long)。
只需创建一个 TaskRepository extends JpaRepository<Task, Long>
并添加以下方法:List<Task> findAllByUserId(Long userId);
到该界面。这假设 Task
有一个字段 User user
并且 User
的主要字段称为 id
(因此是“byUserId”)。
有关如何使用 Spring 数据存储库创建查询的更多详细信息,请参阅 Spring Data JPA, Query Creation。
如果您需要更多控制,还可以查看同一文档中的 @Query
注释。
假设我有这样的东西:
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "assigned_tasks", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "task_id", referencedColumnName = "id"))
private Set<Task> assignedTasksDoer = new HashSet<>();
在我的“用户”实体中 class。
当我获取用户时,它会为我提供所有详细信息。那太好了。没有任何错误。 但是我怎样才能把它分成几个部分,例如,当我只想获取用户的“assigned_tasks”时,我可以从 UserController 以外的其他控制器获取它,即 AssignedTasksController?
如果有人感兴趣,我愿意提供更多细节。
在我开始这种面向对象的方法时请帮助我!!是的,使用 jpa、实体、DAO 和存储库很棒,同时让 Spring 处理幕后的所有事情也很棒,但是它有限制吗?我能否完全避免编写 sql 查询和准备语句或其他我必须求助于它的情况?
TL;DR: 用户实体也有其他字段。我想制作一个控制器路由,每次只获取用户分配的任务,而不是整个对象。我该怎么做?
我假设您正在使用 Spring Data JPA。在那种情况下,您很可能已经有了类似 UserRepository extends JpaRepositry<User, Long>
的东西(假设主键是 Long)。
只需创建一个 TaskRepository extends JpaRepository<Task, Long>
并添加以下方法:List<Task> findAllByUserId(Long userId);
到该界面。这假设 Task
有一个字段 User user
并且 User
的主要字段称为 id
(因此是“byUserId”)。
有关如何使用 Spring 数据存储库创建查询的更多详细信息,请参阅 Spring Data JPA, Query Creation。
如果您需要更多控制,还可以查看同一文档中的 @Query
注释。