【发布时间】:2023-03-18 18:05:01
【问题描述】:
在项目中,我有多个具有相同结构的表(列的数量和类型)。这些表是独立的,我需要休眠标准对象,它可以为我提供所有表中的所有值。类似于 SQL 的东西:
select * from TABLE1, TABLE2, TABLE3;
我知道我可以合并列表等中多个条件的结果,但我需要一个 Criteria 对象,因为我们稍后会在许多地方的代码中使用它。
【问题讨论】:
在项目中,我有多个具有相同结构的表(列的数量和类型)。这些表是独立的,我需要休眠标准对象,它可以为我提供所有表中的所有值。类似于 SQL 的东西:
select * from TABLE1, TABLE2, TABLE3;
我知道我可以合并列表等中多个条件的结果,但我需要一个 Criteria 对象,因为我们稍后会在许多地方的代码中使用它。
【问题讨论】:
您可以使用来自多个根的构建条件查询,来自文档
根定义了所有连接、路径和属性的基础 在查询中可用。根始终是实体类型。根是 通过方法重载定义并添加到标准 javax.persistence.criteria.CriteriaQuery
来自docs 的补充示例
CriteriaQuery query = builder.createQuery();
Root<Men> men = query.from( Men.class );
Root<Women> women = query.from( Women.class );
Predicate menRestriction = builder.and(
builder.equal( men.get( Men_.gender ), Gender.MALE ),
builder.equal( men.get( Men_.relationshipStatus ), RelationshipStatus.SINGLE )
);
Predicate womenRestriction = builder.and(
builder.equal( women.get( Women_.gender ), Gender.FEMALE ),
builder.equal( women.get( Women_.relationshipStatus ), RelationshipStatus.SINGLE )
);
query.where( builder.and( menRestriction, womenRestriction ) );
【讨论】: