Вы можете использовать Restrictions.sqlRestriction () , чтобы создать Criterion
, используя условие SQL:
List<PlayerEntity> playerList = (List<PlayerEntity>)session.createCriteria(PlayerEntity.class)
.add(Restrictions.sqlRestriction("(a- b) > 5")).list();
, который сгенерирует SQL: select * from PlayerEntity where (a-b) > 5
Если вы не хотите использовать SQL для указания условия в Criteria API, вы можете определить (a - b) как производное свойство, используя @Formula
:
@Entity
public class PlayerEntity {
@Column(nullable = false)
private Integer a;
@Column(nullable = false)
private Integer b;
@Formula("a - b")
private Integer delta
}
List<PlayerEntity> playerList = (List<PlayerEntity>)session.createCriteria(PlayerEntity.class)
.add(Restrictions.gt("delta", 5).list();
Обратите внимание, что значением @Formula является фактическое имя столбца, а не сопоставленные имена свойств.