【发布时间】:2020-05-20 01:50:31
【问题描述】:
我想知道是否有人知道引发异常的原因?我在下面有以下实体。是不是因为返回的一些Employees不是DriverEmployees,所以没有路由?
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;
private String name;
}
@Entity
public class DriverEmployee extends Employee {
@OneToMany(fetch = FetchType.LAZY)
private List<Routes> routes;
}
@Entity
public class Routes {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;
private String name;
private String description;
}
CriteriaQuery<Tuple> criteria = criteriaBuilder.createQuery(Tuple.class);
Root<Employee> employee = criteria.from(Employee.class);
Root<DriverEmployee> driverEmployee = criteriaBuilder.treat(employee, DriverEmployee.class);
ListJoin<DriverEmployee, Routes> routes = driverEmployee.joinList("routes");
// Want routes to be returned as a list in the multiselect.
criteria.multiselect(employee.get("name").alias("name"), routes.alias("routes"));
TypedQuery<Tuple> query = em.createQuery(criteria);
query.getResultList().forEach((t) -> {
process(t.get("name", String.class));
processList(t.get("routes", List.class).size());
});
我收到的错误如下。任何人都知道我怎样才能让以下成功运行?
Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode
+-[IDENT] IdentNode: 'routes' {originalText=routes}
【问题讨论】:
-
我认为不可能在多选中选择一个集合。在这种情况下,路由是一对多的 List
.
标签: java hibernate jpa-2.0 criteria-api