2015-04-04 4 views
9

Предположим, у меня есть объекты (геттеры/сеттеры и различные детали опущены для краткости):Spring запроса данных, где столбец является нулевым

@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. я 'ве неудачно определен метод в CouponRepository, как описано в docs

@Repository 
public interface CouponRepository extends CrudRepository<Coupon, Long> { 
    Collection<Coupon> findByCustomerAndUsedOnIsNull(Customer); 
} 

, но это приводит на ошибку компиляции Syntax error, insert "... VariableDeclaratorId" to complete FormalParameterList.

ответ

7

Моя вина, правильное определение

@Repository 
public interface CouponRepository extends CrudRepository<Coupon, Long> { 
    Collection<Coupon> findByCustomerAndUsedOnIsNull(Customer customer); 
} 

Я просто пропустил имя параметра :-(

10

Попробуйте изменить метод этого (при условии, Customer.id длинный):

Collection<Coupon> findByCustomer_IdAndUsedOnIsNull(Long customerId);

затем использовать так:

repo.findByCustomer_IdAndUsedOnIsNull(customer.getId());