Hibernate findByExample与非基本成员
我有两个实体 文件和用户 文件具有对用户的@ManyToOne引用,成员上有以下注释:Hibernate findByExample与非基本成员,hibernate,orm,Hibernate,Orm,我有两个实体 文件和用户 文件具有对用户的@ManyToOne引用,成员上有以下注释: @ManyToOne @JoinColumn(name="user_id") private User user 我正在尝试使用“findByExample”方法查找用户的所有文件 我已经创建了一个File实例和一个User实例(设置了用户名)。我已将User的实例添加到文件实例中,并将其传递给“findByExample”,如下所示: Criteria crit = getSession().create
@ManyToOne
@JoinColumn(name="user_id")
private User user
我正在尝试使用“findByExample”方法查找用户的所有文件
我已经创建了一个File实例和一个User实例(设置了用户名)。我已将User的实例添加到文件实例中,并将其传递给“findByExample”,如下所示:
Criteria crit = getSession().createCriteria(File.class);
Example ex = Example.create(exampleInstance);
crit.add(ex);
return crit.list();
不幸的是,“list()”返回数据库中的所有文件,而不仅仅是指定用户的文件。我检查了生成的SQL,发现它没有检查用户对象的任何值,只是连接表并执行“where(1=1)”
hibernate是否可能在执行“FindByeExample”查询时不检查非原语成员?org.hibernate.criteria中的旧TODO。示例类行
207
解释了此问题:
//TODO: get all properties, not just the fetched ones!
Object[] propertyValues = meta.getPropertyValues( entity, getEntityMode(criteria, criteriaQuery) );
我的解决方法是使用示例对象组合一个条件(遵循原始问题):
org.hibernate.criteria.Example
class line207
中的一个旧TODO解释了这个问题:
//TODO: get all properties, not just the fetched ones!
Object[] propertyValues = meta.getPropertyValues( entity, getEntityMode(criteria, criteriaQuery) );
我的解决方法是使用示例对象组合一个条件(遵循原始问题):