无法使用hibernate从表中获取不同的值

无法使用hibernate从表中获取不同的值,hibernate,Hibernate,我想从表中得到不同的记录。但我总是只记录一次。这是我的代码片段,请推荐 选择distinct*from employee_id=23567的员工-给我3条记录,但下面hibernate只给我1条记录 Criteria crit = session.createCriteria(employee.class); crit.add(Restrictions.eq("employeeid", Long.valueOf(employeeId.substring(0,7))));

我想从表中得到不同的记录。但我总是只记录一次。这是我的代码片段,请推荐

选择distinct*from employee_id=23567的员工-给我3条记录,但下面hibernate只给我1条记录

Criteria crit = session.createCriteria(employee.class);
        crit.add(Restrictions.eq("employeeid", Long.valueOf(employeeId.substring(0,7))));
        crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        employeeList= crit.list();
        System.out.println("size--->"+employeeList.size());

我在这里遗漏了什么吗?

按ID搜索时,您会得到3条记录吗?您是否对ID设置了唯一或PK约束?这不是比Hibernate返回的结果更奇怪吗?Hibernate生成的SQL查询是什么?你确定你在同一个数据库和架构上吗?不,coulms被定义为NOTNULL,生成的sql不会显示任何不同的子句。。。而且它总是只给出一条记录。那么,您的意思是表中没有唯一的主键吗?如果是这样,Hibernate将无法工作。Hibernate需要唯一的不可变ID。好的,实际上我通过平面文件将数据放入这个表中,而不是我刚刚替换的员工文件,以隐藏我的业务逻辑并将其转储到其中。因此,我可以使用本机sql查询进行此操作。不。Hibernate实体必须具有唯一的ID。如果您的表中没有任何唯一且可替换的列或列集,则无法使用Hibernate。为什么不添加一个自动生成的ID列?