используя загрузку / получение с использованием дженериков - PullRequest
1 голос
/ 06 января 2010

Как в Hibernate загрузить сущность с использованием шаблонов?

Сейчас я делаю:

Entity e = (Entity) session.load(Entity.class, 123);

В NHibernate с дженериками я могу сделать:

session.Get<Entity>(123);

Что такое эквивалент Hibernate?

Ответы [ 2 ]

4 голосов
/ 06 января 2010

К сожалению, Java не поддерживает Reified Generics пока .

Лучшее, что вы можете сделать, - это обернуть его другим удобным способом, чтобы избавить от необходимости использовать приведение:

public <T> T get(Class<T> cls, Long id) {
    return cls.cast(session.load(cls, id));
}

, который можно использовать следующим образом:

Entity e = get(Entity.class, 123);
1 голос
/ 06 января 2010

Чтобы добавить ответ BalusC, вы можете быть более явным при вызове универсального метода-оболочки. Итак, если метод-обертка находится в классе GenericSession:

public class GenericSession {

    private GenericSession() {}

    public static <T> T get(Class<T> cls, Long id) {
        return cls.cast(session.load(cls, id));
    }
}

Вы можете назвать это так:

Entity e = GenericSession.<Entity>get(Entity.class, 123);

Это должно дать вам лучшее представление о том, как все происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...