大家好我有这个代码:
Criteria criteria = session.createCriteria(Department.class);
ProjectionList properties = Projections.projectionList();
properties.add(Projections.property("id"), "id");
properties.add(Projections.property("name"), "name");
properties.add(Projections.property("children"), "children");
criteria.setProjection(properties);
criteria.setFetchMode("children", FetchMode.JOIN);
criteria.setResultTransformer(Transformers.aliasToBean(Department.class));
criteria.add(Restrictions.isNull("parent.id"));
criteria.add(Restrictions.eq("active", true));
return criteria.list();
Run Code Online (Sandbox Code Playgroud)
和实体类
public class Department extends Model {
@Size(max = 200)
private String name;
@Size(max = 10)
private String sg;
@Size(max = 1000)
private String description;
@ManyToOne
@JoinColumn(name = "id_parent")
private Department parent;
private boolean active;
@OneToMany(mappedBy = "parent")
private List<Department> children;
Run Code Online (Sandbox Code Playgroud)
......加上吸气剂和二传手......
我执行标准并给我stacktrace异常:
java.lang.ArrayIndexOutOfBoundsException: 2
at org.hibernate.loader.criteria.CriteriaLoader.getResultRow(CriteriaLoader.java:166)
at org.hibernate.loader.criteria.CriteriaLoader.getResultColumnOrRow(CriteriaLoader.java:146)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:747)
at org.hibernate.loader.Loader.processResultSet(Loader.java:949)
at org.hibernate.loader.Loader.doQuery(Loader.java:917)
at …Run Code Online (Sandbox Code Playgroud)