我将尝试使用 Hibernate 中的投影功能获取部分对象,就像这样:
电影类:
@Table(name = "Movies")
public class Movie extends Entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "title")
private String title;
@OneToMany(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
@JoinTable(name = "Movie_Genre", joinColumns = {@JoinColumn(name = "movieId")}, inverseJoinColumns = {@JoinColumn(name = "genreId")})
private List<Genre> genres;
当用户访问htp://localhost:8080/api/movies?fields=genres时,这被称为:
电影DAO:
Criteria cr = getCurrentSession().createCriteria(Movie.class);
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("genres"), "genres");
cr.setProjection(projectionList);
cr.setResultTransformer(Transformers.aliasToBean(Movie.class));
return cr.list();
但是这将返回:
java.lang.ArrayIndexOutOfBoundsException: 0
org.hibernate.loader.criteria.CriteriaLoader.getResultRow(CriteriaLoader.java:166)
Hibernate查询:
select this_.id as y0_ from Movies this_
当您想要投射集合时,投射(Projections)是无效的...
有人能告诉我该怎么办吗?这个问题怎么解决?
提前感谢您!