2015-04-04 11 views
9

Supponiamo che io sono entità (getter/setter e vari dettagli omessi per brevità):Primavera query di dati dove la colonna è nullo

@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; 
} 

Vorrei recuperare tutti i tagliandi per un dato cliente avendo nulla usedOn. I, 've inutilmente definito un metodo nel CouponRepository come descritto in docs

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

ma questo porta su un errore di compilazione Syntax error, insert "... VariableDeclaratorId" to complete FormalParameterList.

risposta

7

Colpa mia, la definizione corretta è

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

Ho semplicemente perso il nome del parametro :-(

10

Provare a cambiare il metodo a questo (supponendo Customer.id è una lunga):

Collection<Coupon> findByCustomer_IdAndUsedOnIsNull(Long customerId);

quindi utilizzare in questo modo:

repo.findByCustomer_IdAndUsedOnIsNull(customer.getId());

Problemi correlati