0

我有一个表 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;
4

0 回答 0