2012-11-25 134 views
0

我不知道我是否可以這樣做。我有,我用Hibernate存儲一個字符串的屬性:String tags這個屬性可以爲示例值:tags="car,airplane,bycicle"搜索屬性字符串類型,一些hql用於休眠的字符

現在我想獲得它的標籤值包含字符串「汽車」的實例:

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

返回A和C

有什麼辦法可以做到這一點?

我嘗試按標籤分類對象,然後恢復包含一個或多個特定標籤的對象。

這個想法是當你去問一個問題的時候,Stackoverflow與標籤字段做的相同。

+0

你見過這個答案嗎? http://stackoverflow.com/questions/11793159/how-to-use-oracles-regexp-like-in-hibernate-hql –

回答

1

這正是數據庫規範化很重要的原因。不應將多個值存儲在單個列中。您應該有一個標記實體,並且在您的實體和標記實體之間有一個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