Je veux obtenir toutes les offres avec (où) OfferState est égal à ACTIVE - est-il possible d'utiliser Spring Data avec un seul nom de méthode ou je dois utiliser @Query
?JpaRepository avec Enum: findAllByOfferState_ACTIVE. NoSuchElementException
@Repository
public interface OfferRepository extends JpaRepository<Offer, Long> {
Page<Offer> findAllByOfferState_ACTIVE(Pageable pageable);
}
public enum OfferState {
ACTIVE, FINISHED
}
@Entity
@Table(name = "OFFERS")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Offer {
@Id
@GeneratedValue
private Long id;
[...]
@Enumerated(EnumType.STRING)
private OfferState offerState;
}
@Service
public class OfferServiceImpl implements OfferService {
@Autowired
private OfferRepository offerRepository;
@Override
public Offer saveOffer(Offer offer) {
offer.setOfferState(OfferState.ACTIVE);
return offerRepository.save(offer);
}
@Override
public Page<Offer> getAllByPage(Pageable pageable) {
Page<Offer> allByOfferState_active = offerRepository.findAllByOfferStateACTIVE(pageable);
return allByOfferState_active;
}
}
Est-ce que findAllByOfferState_ACTIVE
est incorrect? Quand je fais GET, alors dans ma méthode de service getAllByPage
lève une exception Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.util.NoSuchElementException] with root cause
.
J'ai essayé avec @Enumerated(EnumType.STRING)
et sans elle, mais toujours la même chose.
Ne pas oublier d'accepter/réponses Upvote que vous a aidé ... – Cepr0