Как заставить фильтры гибернации работать в JPA?

У меня есть следующий класс сущностей:


@Entity
@FilterDef (name = "byLastName", parameters = @Parameter (name = "lastName", type="string"))
@Filters ({
    @Filter (name = "byLastName", condition = "lastName = :lastName")
})
public class User {
    String firstName;
    String lastName;
}

В моем DAO я делаю это:


public User findById (Long id)
{
   Session s = (Session) em.getDelegate ( );
   s.enableFilter ("byLastName").setParameter ("lastName", "smith");

   User u = em.find (User.class, id);
   return (u);
}

Теперь, если я понимаю это правильно, фильтр должен быть применен, и любой пользователь, которого я пытаюсь получить, должен вернуться как нуль, если lastName не равно "smith". Проблема в том, что фильтры не применяются. Любой пользователь, которого я пытаюсь для извлечения из базы данных, независимо от возвращаемого значения lastName.

Я неправильно понимаю, как работают фильтры? Или я что-то упустил в том, как я это настроил? Обратите внимание, что я не использую hibernate.cfg.xml ; у меня все настроено с помощью JPA и аннотаций.

Буду признателен за любую помощь.

Спасибо.

5
задан DataNucleus 4 June 2012 в 17:28
поделиться