我想获得所有报价(其中) OfferState 等于 ACTIVE - 是否可以仅使用方法名称使用 Spring Data 或者我必须使用@Query
?
@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;
}
}
Is findAllByOfferState_ACTIVE
不正确?当我执行 GET 时,然后在我的服务方法中getAllByPage
抛出异常Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.util.NoSuchElementException] with root cause
.
我尝试过@Enumerated(EnumType.STRING)
没有它,但还是一样。
您可以创建默认接口方法:
public interface OfferRepository extends JpaRepository<Offer, Long> {
default List<Offer> findAllWhereOfferStateIsActive() {
return findByOfferState(OfferState.ACTIVE);
}
List<Offer> findByOfferState(OfferState state);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)