搜索属性String类型,一些字符用hql进行hibernate

时间:2012-11-25 18:07:45

标签: java hibernate hql

我不知道我是否可以这样做。我有一个属性,我用hibernate存储一个字符串:String tags这个属性可能值,例如:tags="car,airplane,bycicle"

现在我想得到其标签值包含子字符串“car”的实例:

Object A --> tags="car,airplane"
Object B --> tags="bycicle"
Object C --> tags="bycicle,car"

返回A和C

有什么方法可以做到这一点吗?

我尝试按标签对对象进行分类,然后恢复包含一个或多个特定标记的对象。

当您提出问题时,我们的想法是使用Stackoverflow对标记字段执行的操作。

1 个答案:

答案 0 :(得分:1)

这正是数据库规范化很重要的原因。多个值不应存储在单个列中。您应该有一个Tag实体,并且在您的实体和Tag实体之间具有ManyToMany关联。如果你有,你可以简单地做

select p from Post p inner join p.tags tag where tag.name = 'car'

根据您当前的设计,您最好的选择是

select p from Post p where p.tags like '%car%'

但这会慢得多,并会返回标记小心 vacarm 的帖子。