Hibernate findByExample与非基本成员

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引用,成员上有以下注释:

@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 line
207
中的一个旧TODO解释了这个问题:

//TODO: get all properties, not just the fetched ones!
Object[] propertyValues = meta.getPropertyValues( entity, getEntityMode(criteria, criteriaQuery) );
我的解决方法是使用示例对象组合一个条件(遵循原始问题):