我使用spring数据JPA。我需要在我的存储库请求中仅加载具体属性的集合 colors :
TextBox
提供的解决方案正常运行。
我希望使用spring方法来简化它,以加载我使用的存储库对象的集合(repository @Query(value = "SELECT cd.color FROM CalendarDetails cd where cd.userCalendar.userId = :userId")
List<String> findCalendarColorsByUserWithDuplicates(@Param("userId") Long userId);
):
public interface CalendarDetailsRepository extends JpaRepository<CalendarDetails, Long>
但我需要收集颜色!试图
List<CalendarDetails> findByUserCalendarUserId(@Param("userId") Long userId);
我收集了List<String> findColorByUserCalendarUserId(Long userId);
是否有可能在弹簧数据加载颜色列表后改进我的上一次请求?
答案 0 :(得分:2)
您可以尝试Spring Data提供的特殊投影机制。它不仅可以优化您的查询,还可以在不使用@Query的情况下使用纯Java。
有很多方法可以 make it,但我建议如下。 您添加了一个接口,其中包含您需要从实体获取的属性的getter:
public interface ColorOnly {
String getColor();
}
然后返回此界面'对象:
的列表List<ColorOnly> findColorByUserCalendarUserId(Long userId);
要使用界面中的颜色,只需调用getColor方法即可。您可以考虑使用Java 8流和映射转换来简化它。顺便说一句,这个只会查询颜色。 Hibernate生成的查询中不会包含其他字段。
答案 1 :(得分:-1)
尝试添加全部
findAllByUserCalendarUserId(Long userId);