-1
私はHibernateを使用しており、Hibernateフィルタオプションでエンティティをフィルタリングしたいと思います。しかし、フィルターは無視されます。 Workspaceエンティティには、ユーザーエンティティが含まれます。そして、私はdoesentを持つthiseユーザーだけのすべてのワークスペースエンティティがデータベースのE-MailフィールドにNULL値を持つことを望みます。 私はあなたからのご連絡をお待ちしております。おかげHibernateフィルタが機能しません
ワークスペース
@Entity
@Table(name = "WORKSPACEENTITY", schema = "pwdmanager")
@PrimaryKeyJoinColumn(name = "workspace_id", referencedColumnName = "id")
@Setter
@Getter
@FilterDef(name = "FILTER")
public class DBWorkspaceEntity{
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "wkse_space")
private List<DBPasswordEntity> pwde_password;
@OneToOne(fetch = FetchType.EAGER)
@Filters({
@Filter(name="FILTER", condition="{u}.usre_email is not null", aliases={@SqlFragmentAlias(alias="u", entity=DBUserEntity.class)}),
})
private DBUserEntity usre_user;
}
ユーザー
@Entity
@Table(name = "USERENTITY", schema = "pwdmanager")
@Setter
@Getter
@PrimaryKeyJoinColumn(name = "user_id", referencedColumnName = "id")
public class DBUserEntity{
@Basic
@Column(name = "USRE_EMAIL", nullable = true, length = 1024)
private String usre_email;
}
休止状態だと思い
public class MasterDao{
private Session session;
private Transaction transaction;
private SessionFactory sessionFactory;
public void prepare() {
sessionFactory = HibernateUtil.getSessionFactory();
this.session = sessionFactory.openSession();
}
public void filter(final DBUserEntity usr) {
try {
session.enableFilter("FILTER");
Query query = session.createQuery("FROM " + DBWorkspaceEntity.class.getSimpleName());
List<DBWorkspaceEntity> result = query.list();
session.disableFilter("FILTER_USER");
} catch (final HibernateException ex) {
log.error(ex);
}
}
}
フィルタ条件をUSRE_EMAIL IS NOT NULLに変更したところ、同じ結果が得られました – Dominik