Spring 数据:@ElementCollection 注解的字符串查询列表
Spring Data: Query list of string annotated with @ElementCollection
如果我有一个具有这种结构的实体:
@Entity
public class RecipeRaw {
@Id
@GeneratedValue
Long id;
@ElementCollection
List<String> listOfIngredients=new LinkedList<String>();
我想获得一个列表,其中包含所有包含单词 X 的成分。怎么做?
例如,如果单词是牛肉,我想获取成分列表,例如 'ground beef' 、 'dried beef with salt' 等等。
我试过了
@Query("select ings_temp from
(select rr.listOfIngredients ings_temp from RecipeRaw rr) ings
where ings LIKE '?1'")
但这会引发错误。有什么简单的方法可以做这个查询吗?
我用这个解决了
@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);
如果我有一个具有这种结构的实体:
@Entity
public class RecipeRaw {
@Id
@GeneratedValue
Long id;
@ElementCollection
List<String> listOfIngredients=new LinkedList<String>();
我想获得一个列表,其中包含所有包含单词 X 的成分。怎么做?
例如,如果单词是牛肉,我想获取成分列表,例如 'ground beef' 、 'dried beef with salt' 等等。
我试过了
@Query("select ings_temp from
(select rr.listOfIngredients ings_temp from RecipeRaw rr) ings
where ings LIKE '?1'")
但这会引发错误。有什么简单的方法可以做这个查询吗?
我用这个解决了
@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);