在hibernate中结合“in”和“like”?

时间:2016-08-31 20:54:57

标签: java hibernate

我有两个表,planaccount,我还有两个类PlanAccount,代表这些表。

Account包含字段idplan_idvdntypePlan包含字段id和其他一些不相关的字段。它的结构使得计划可以分配给多个帐户。

我的Plan类有一个名为accounts的字段,其映射如下:

@OneToMany(mappedBy = "plan", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
@OrderBy(value = "type")
@LazyCollection(value = LazyCollectionOption.FALSE)
private List<Account> accounts;

因此,计划中包含与其关联的所有帐户的列表。我要做的是使用属于其相应帐户的vdns过滤计划列表。

例如,如果一个计划属于vdn“abc”的帐户而另一个计划属于vdn“123”的帐户,则用户可以按字符串“ab”进行搜索“12”找到他们两个。

这是我到目前为止所做的:

criteria.createCriteria("accounts").add(Restrictions.in("vdn", new String[] { "abc", "123" }));

此代码有效,但它只与字符串完全匹配。如果用户输入“abc”,那么它将找到该计划。如果用户输入“ab”,则无法找到该计划。

到目前为止,我还尝试过类似的事情:

criteria.createCriteria("accounts").add(Restrictions.in("vdn", new String[] { "%ab%", "%12%" }));

但这没效果。

有没有办法使用“喜欢”限制和“在”限制?

0 个答案:

没有答案