【问题标题】:How can I write a repository method for this situation?我该如何为这种情况编写存储库方法?
【发布时间】:2021-07-18 16:02:39
【问题描述】:

我知道这不是定义汽车类的最佳方式,但我很好奇,最后写了这个:

@Entity
@Table(name = "CAR")
public class Car {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String manufacturer;
    private String model;

    @ElementCollection
    @CollectionTable(
        name="ACCESSORY",
        joinColumns=@JoinColumn(name="OWNER_ID")
    )
    @Column(name="ACCESSORIES")
    private List<String> accessories;

    //getters and setters
}

及其存储库

@Repository
public interface CarRepository extends JpaRepository<Car, Long> {   
}

现在,考虑到我想创建一个存储库方法来查找满足给定配件列表的所有汽车,我该怎么做?我在考虑像findById() 这样的方法。 顺便说一句,如果您想以“附件”是一个实体的方式回答,请随意。

免责声明:是的,我尝试了List&lt;Car&gt; findByAccessoriesIn(List&lt;String&gt; as); 方法,但它会带来任何至少包含列表中的一个元素的汽车。我想要列表中包含所有项目的所有汽车。

【问题讨论】:

  • 你在寻找 findAllByAccessories(List as)

标签: java spring hibernate jpa spring-data-jpa


【解决方案1】:

“找到所有符合给定配件列表的汽车”

如果我理解正确的话—— findByAccessoriesIn(List yourStrList) 在这种情况下应该可以工作。

这里有一个类似的线程: Spring CrudRepository findByInventoryIds(List<Long> inventoryIdList) - equivalent to IN clause

对于 jpa 中的列表,我们使用“in”,其中“i”大写。

【讨论】:

  • 那种。 'IN' 条款带来任何至少有一个配件的汽车。我只想携带清单内所有配件的汽车。
  • 是的,传递您要为其查找汽车的那些配件字符串。我想这就是你要找的。试试看。
  • 它带来任何汽车
猜你喜欢
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
相关资源
最近更新 更多