【发布时间】:2016-09-07 03:17:40
【问题描述】:
我在我的项目中使用 Spring Boot (1.3.3.RELEASE) 和 Hibernate JPA。我的实体如下所示:
@Data
@NoArgsConstructor
@Entity
@Table(name = "rule")
public class RuleVO {
@Id
@GeneratedValue
private Long id;
@Column(name = "name", length = 128, nullable = false, unique = true)
private String name;
@Column(name = "tag", length = 256)
private String tag;
@OneToMany(mappedBy = "rule", cascade = CascadeType.ALL, orphanRemoval = true)
private List<RuleOutputArticleVO> outputArticles;
@OneToMany(mappedBy = "rule", cascade = CascadeType.ALL, orphanRemoval = true)
private List<RuleInputArticleVO> inputArticles;
}
我的存储库如下所示:
@Repository
public interface RuleRepository extends JpaRepository<RuleVO, Long> {
}
在某些情况下,我只需要获取实体 RuleVO 的 id 和 name 属性。我怎样才能做到这一点?我发现一个通知应该可以使用 Criteria API 和 Projections 但如何?提前谢谢了。沃杰科技
【问题讨论】:
-
我做不到,你能做的就是延迟加载集合。我想说选择性地拉回数据没有性能优势。
-
参见 19.1.7 docs.jboss.org/hibernate/orm/3.3/reference/en/html/…,它基本上表明,根据上面的评论,对于非收集字段,它是可行的,但你在浪费时间。
-
Spring Data Projection 是此类问题的最佳解决方案。 docs.spring.io/spring-data/jpa/docs/current/reference/html/…
标签: spring hibernate spring-boot jpa spring-data-jpa