Добавление к ответу Ксавежоа:
На самом деле между этими двумя методами существует большая разница, которую вы заметите, если объедините Criteria
методы. Вы будете продолжать работать с исходным объектом Criteria
при использовании createAlias
, тогда как при работе с createCriteria
.
вы будете работать с более вложенными областями.
Учтите это:
Criteria c = getSession()
.createCriteria(YourEntity.class)
.createCriteria("someMember", "s")
.add(Restrictions.eq("name", someArgument)); // checks YourEntity.someMember.name
против
Criteria c = getSession()
.createCriteria(YourEntity.class)
.createAlias("someMember", "s")
.add(Restrictions.eq("name", someArgument)); // checks YourEntity.name
Однако, если вы всегда назначаете и используете псевдоним, вы сможете обойти эту разницу. Как:
Criteria c = getSession()
.createCriteria(YourEntity.class, "y")
.createAlias("someMember", "s")
.add(Restrictions.eq("y.name", someArgument)); // no more confusion