私は次のエンティティクラスを持っています:
@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"と等しくない場合、取得しようとするすべてのユーザーはnullとして返されるはずです。問題は、フィルターが適用されていないように見えることです。lastNameの値に関係なく、データベースから取得しようとしたすべてのユーザーが返されます。
フィルタがどのように機能するか誤解していますか?または、これを構成する方法に何かが欠けていますか?私はhibernate.cfg.xmlを使用していないことに注意してください。すべてがJPAとアノテーションを使用して構成されています。
どんな助けでも大歓迎です。
ありがとう。