Будьте в спящем режиме критерии: таблица Joining без отображенной ассоциации

System.exit(-1)

Не гарантирует , что ваша программа остановится. Если у вас есть своего рода ловушка отключения , или если вы находитесь в середине потоковой операции, это можно предотвратить. Таким образом, компилятор выдает ошибку.

Возможно, вы захотите, чтобы Exception покинул текущий слой.

Config c;

try {
    c = new Config();
} catch (final Exception e) {
    System.err.println("Error while parsing/reading file: " + e.getMessage());
    throw new YourCustomRuntimeException(e);
}

c.whatever();
69
задан Fortyrunner 6 April 2009 в 07:44
поделиться

4 ответа

Мое понимание - то, что, если Вы делаете это использование HQL, Вы создаете Декартово соединение с фильтром, а не внутреннее объединение. Запросы критериев не поддерживают выполнение этого.

61
ответ дан David M 24 November 2019 в 13:47
поделиться

Существует a SQLCriterion, который можно дать произвольный SQL, и добавьте к Вашему Criteria. В SQL строка, маркер {псевдоним} "будет заменен псевдонимом корневого объекта".

-2
ответ дан Tom11 24 November 2019 в 13:47
поделиться

В NHibernate вы можете использовать подзапросы, которые определены как DetachedCriteria. Не уверен, что он работает так же в Java, скорее всего, он такой же:

DetachedCriteria pets = DetachedCriteria.For<Pet>("pet")
  .SetProjection(Projections.Property("pet.ownername"))
  .Add(/* some filters */ );

session.CreateCriteria(typeof(Owner))
  .Add(Subqueries.PropertyIn("name", pets);

Предполагается, что он объединен с использованием имени владельца.

1
ответ дан Stefan Steinegger 24 November 2019 в 13:47
поделиться

Это действительно возможно с критериями:

DetachedCriteria ownerCriteria = DetachedCriteria.forClass(Owner.class);
ownerCriteria.setProjection(Property.forName("id"));
ownerCriteria.add(Restrictions.eq("ownername", "bob"));

Criteria criteria = getSession().createCriteria(Pet.class);
criteria.add(Property.forName("ownerId").in(ownerCriteria));

Обновление : это фактически выполняет подпросию вместо присоединения, но позволяет использовать критерии на двух объектах, которые не имеют Отношение к гибернации определена.

77
ответ дан 24 November 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: