Java 休眠:使用条件按列表筛选
我有一个医生。每个医生都有一份健康保险清单,这是另一个实体 我的目标是建立一个基于用户选择的健康保险的搜索系统。我必须让所有在用户健康保险列表中至少有1个健康保险的医生都参加。大概是这样的:Java 休眠:使用条件按列表筛选,java,hibernate,criteria,Java,Hibernate,Criteria,我有一个医生。每个医生都有一份健康保险清单,这是另一个实体 我的目标是建立一个基于用户选择的健康保险的搜索系统。我必须让所有在用户健康保险列表中至少有1个健康保险的医生都参加。大概是这样的: Criteria criteria = session.createCriteria(Doctor.class); criteria.add(Restrictions.in("healthInsurances", userHealthInsurances)); return criteria.list();
Criteria criteria = session.createCriteria(Doctor.class);
criteria.add(Restrictions.in("healthInsurances", userHealthInsurances));
return criteria.list();
但是这段代码引发了以下异常:java.sql.SQLException:没有为参数1指定值
是否有任何方法可以使用标准来实现这一点
Criteria criteria = session.createCriteria(Doctor.class);
criteria.createCriteria("healthInsurances").add(Restrictions.in("id", userSelectedIds));
return criteria.list();
您可以通过
createAlias
获得相同的功能。请看更多示例。它起作用了,谢谢。当我展示一个实体列表而不是ID列表时,是否有任何方法可以在不生成id列表的情况下执行相同的操作?如果使用id覆盖HealthInsurance
对象的equals
和hashCode
方法,并将userHealthInsurances
列表作为方法中的参数传递,则可能会起作用;但对此不确定;)你是说像我在问题中提出的那样?当我这样做时,我得到了我说的错误(java.sql.SQLException:没有为参数1指定值)。如果保留您所说的内容,但将“UserSelectedDS”更改为“userHealthInsurances”,我会得到以下错误:java.lang.ClassCastException:HealthInsurance不能转换为Long。我是指第二个(您得到了ClassCastException),结果它不起作用。