【问题标题】:Search into a property String type, some characters with hql for hibernate搜索到一个属性字符串类型,一些带有 hql 的字符用于休眠
【发布时间】:2012-11-25 18:07:44
【问题描述】:

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

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

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

返回 A 和 C

有什么办法吗?

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

这个想法与 Stackoverflow 在您提问时对标签字段所做的相同。

【问题讨论】:

标签: java hibernate hql


【解决方案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%'

但这会慢得多,并且会返回带有 careful 或 vacarm 标签的帖子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多