使用非主列作为标准的 Hibernate 关联

Hibernate association using non-primary columns as criteria

我想要一个由匹配非 pk 值的对象组成的只读集合关系。

下面的例子table可以说明我的观点:

User:
 id<pk>
 username
 alias
 Collection logs (all Log entries with log.useralias=alias and log.status>4)

Log:
 id<pk>
 status
 useralias
 message

注意:这只是一个例子,请不要评论这个例子的有用性。

我需要它作为关系的原因是性能:我无法对每个用户的日志执行查询,我需要一个初始化所有数据的查询。

额外问题:是否可以从 HQL 查询初始化此关系而不是将其表示为关系? 类似于:

from User u
  left join fetch Log l into u.logs
  where l.useralias=u.alias and l.status>4

编辑: 请注意,这与 Cat 示例不同:

from Cat as cat
    left join cat.kittens as kitten
        with kitten.bodyWeight > 10.0

在这种情况下,Cat 到 Kittens 的关系是外键-> 主键关系,这将使生活变得更加简单。在我的问题中,我没有外键,只有非 pk 过滤器。

JoinColumn 有一个 referencedColumnName 属性,允许设置...引用的列名(即 alias,在这种情况下)。

Hibernate 有一个 Where 注释允许指定一个条件,使用 SQL,集合的元素必须验证(即 status > 4