首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列为空的Spring数据查询

列为空的Spring数据查询
EN

Stack Overflow用户
提问于 2015-04-04 23:43:31
回答 3查看 83.6K关注 0票数 48

假设我有实体(为简洁起见,省略了getters/setter和各种细节):

代码语言:javascript
复制
@Entity
class Customer{
    ...
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "customer")
    Collection<Coupon> coupons;
}

@Entity
class Coupon{
    ...
    @Temporal(value = TemporalType.TIMESTAMP)
    private Date usedOn;

    @ManyToOne(fetch = FetchType.LAZY)
    @NotNull
    Customer customer;
}

我希望检索具有空usedOn的给定客户的所有优惠券。我已经按照docs中的描述在CouponRepository中定义了一个方法,但失败了

代码语言:javascript
复制
@Repository
public interface CouponRepository extends CrudRepository<Coupon, Long> {
     Collection<Coupon> findByCustomerAndUsedOnIsNull(Customer);
}

但这会导致编译器错误Syntax error, insert "... VariableDeclaratorId" to complete FormalParameterList

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-05 01:50:20

我的错,正确的定义是

代码语言:javascript
复制
@Repository
public interface CouponRepository extends CrudRepository<Coupon, Long> {
     Collection<Coupon> findByCustomerAndUsedOnIsNull(Customer customer);
}

我只是遗漏了参数名:-(

票数 37
EN

Stack Overflow用户

发布于 2018-09-24 15:01:21

您可以使用IsNull来检查JPA查询中的空列。

例如,对于任何columnA查询,您都可以编写类似的查询

代码语言:javascript
复制
findByColumnAIsNull

在这种情况下,您可以编写如下查询

代码语言:javascript
复制
@Repository
public interface CouponRepository extends CrudRepository<Coupon, Long> {
 Collection<Coupon> findByCustomerAndUsedOnIsNull(Customer customer);
 List<Coupon> findByUsedOnIsNull();
}

您还可以检查此查询的结果

参考这篇Spring Data JPA查询创建,这将帮助您理解和创建不同类型的JPA查询变体。

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation

票数 25
EN

Stack Overflow用户

发布于 2015-04-05 01:33:26

试着把你的方法改成这样(假设Customer.id是一个长整型的):

Collection<Coupon> findByCustomer_IdAndUsedOnIsNull(Long customerId);

然后像这样使用:

repo.findByCustomer_IdAndUsedOnIsNull(customer.getId());

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29448282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档