我有一个表 Computer 和一个表 Employee 与多对多的关系。
在数据库中,我有一个链接表,但在 Hibernate 中,我只有两个表 Computer 和 Employee 的实体。
我想返回可以使用特定计算机的员工列表,所以我正在做:
String queryString = "from Employee h join h.computer u where u.id = :computer_id";
Query queryObject = getSession().createQuery(queryString);
queryObject.setInteger("computer_id", id);
return queryObject.list();
前面代码的问题是它返回了一个我没有的实体列表。我应该有 List<ComputerEmployee> 但我没有而且我不想要这个。我想要一个列表<Employee>。
因此,当我尝试从之前的任何其他列表中读取属性时,我收到此错误:
Bean property 'id' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?: org.springframework.beans.NotReadablePropertyException: Invalid property 'id' of bean class [[Ljava.lang.Object;]: Bean property 'id' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
那么,我应该如何重新制定 HQL 查询以获得有效的查询List<Employee>
?
更新:
在调试中,我以这种方式检查了列表:
list.get(0).getClass()
它返回java.lang.Object
conf 在 spring 的 session factory bean 中,这样:
<property name="packagesToScan" value="uk.co.bau.domain"></property>
这是最上面的部分:
@Entity
public class Employee implements Serializable {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;