Spring Data:使用@ElementCollection注释的字符串的查询列表

时间:2015-01-04 14:22:01

标签: spring-data spring-data-jpa

如果我有一个具有这种结构的实体:

@Entity
public class RecipeRaw {
    @Id
    @GeneratedValue
    Long id;

    @ElementCollection
    List<String> listOfIngredients=new LinkedList<String>();

我希望得到一个包含所有成分的列表,其中包含单词X.怎么做?

例如,如果这个词是牛肉,我想得到一份“碎牛肉”,“加盐牛肉干”等成分清单。

我试过

@Query("select ings_temp from 
        (select rr.listOfIngredients ings_temp from RecipeRaw rr) ings 
        where ings LIKE '?1'")

但这会引发错误。有没有简单的方法来进行此查询?

1 个答案:

答案 0 :(得分:5)

我解决了这个

@Query("SELECT DISTINCT t FROM RecipeRaw rr JOIN rr.listOfIngredients t "
            + "WHERE t LIKE CONCAT('%', :ing_name, '%')")
    List<String> findIngredientsByLikeName(@Param("ing_name") String name);