在Hibernate/Spring Boot中,如果不想直接获取@ManyToMany关联关系中的集合,可以通过以下步骤实现:
@ManyToMany
@JoinTable(name = "user_role",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;
public class UserRoleDTO {
private Long userId;
private Long roleId;
// 其他需要的字段
// 省略构造函数、getter和setter方法
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT new com.example.dto.UserRoleDTO(u.id, r.id) FROM User u JOIN u.roles r WHERE u.id = :userId")
List<UserRoleDTO> findUserRoles(@Param("userId") Long userId);
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<UserRoleDTO> getUserRoles(Long userId) {
return userRepository.findUserRoles(userId);
}
}
通过以上步骤,可以在Hibernate/Spring Boot中实现不直接获取@ManyToMany关联关系中的集合,而是获取自定义的DTO类,其中包含了关联实体的相关信息。这样可以更灵活地处理关联关系,并且可以避免直接暴露实体类的细节。
Elastic 实战工作坊
Elastic 实战工作坊
云+社区技术沙龙[第6期]
云+社区技术沙龙 [第30期]
腾讯云GAME-TECH沙龙
腾讯云GAME-TECH沙龙
腾讯位置服务技术沙龙
云+社区技术沙龙[第21期]
云+社区技术沙龙[第10期]
Elastic 中国开发者大会
领取专属 10元无门槛券
手把手带您无忧上云