HQL с полным именем класса - PullRequest
3 голосов
/ 16 марта 2011

Допустим, у меня есть сущность Foo, подобная -

package com.some.company.model;
// imports
@Entity
public class Foo{
    @Id
    private Long id;    

    // getters / setters and other properties omitted   
}

, поэтому при работе с Entity через HQL я предпочитаю ссылаться на Entity по полному имени класса, например -

entityManager.createQuery(String.format("delete from %s where id = :id", Foo.class.getName()))
                .setParameter("id", fooId)
                .executeUpdate();

Iзаметил одну вещь в аннотации @Entity - свойство name по умолчанию имеет неквалифицированное имя класса сущности.что заставляет меня задуматься, почему неквалифицированное имя?
Что я должен использовать в HQL безусловное имя или полное имя?

Ответы [ 2 ]

4 голосов
/ 16 марта 2011

Нет смысла использовать полное имя, потому что Hibernate не допускает дублирование имен объектов. Так что, если у вас были разные сущности с одинаковыми именами, в разных пакетах. Hibernate сгенерирует исключение DuplicateMappingException.

0 голосов
/ 16 марта 2011

Я не думаю, что это имеет значение, но ... Я предпочитаю неквалифицированное имя просто потому, что оно короче и облегчает понимание моего HQL. Единственная причина, по которой я могу использовать полностью определенное имя, состоит в том, что у вас есть 2 разных объекта Foo (скажем, из разных пакетов), в этом случае я бы предпочел отобразить их на разные имена объектов (скажем, AFoo, BFoo) вместо того, чтобы использовать полностью определенные имена, чтобы различать их.

...