0

我不知道我能不能做到这一点。我有一个属性,我用 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 在您提出问题时对标签字段所做的相同。

4

1 回答 1

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%'

但这会慢得多,并且会返回带有标签的帖子carevacarm

于 2012-11-25T18:13:39.300 回答