【发布时间】:2020-02-15 14:57:05
【问题描述】:
使用 Spring Dat JPA,我需要查询我的数据库并根据 startAmt 和 endAmt 的数量返回 OrderEntitys 的范围。我不确定是否应该将这两个变量映射到实体OrderEntity,作为某种类型的单独类/实体/模型中的字段,或者只是在我的本机查询中声明它们。也许我应该使用实现EntityManager.createNativeQuery() 的服务?
想做类似的事情:
@Repository
public interface OrderRangeRepository extends JpaRepository<OrderEntity, OrderEntityID> {
@Query(value = "SELECT * FROM Orders WHERE Amount BETWEEN startAmt AND endAmt;" , nativeQuery=true)
List<OrderEntity> findOrdersBy(int startAmt, int endAmt);
}
如果我在服务中使用EntityManager.createNativeQuery(),可能如下所示:
@Service
public class OrderRangeService {
@Autowired
EntityManager entityManager;
public List<OrderEntity> findAmountsBetween() {
List<OrderEntity> amountsBetween = entityManager.createNativeQuery("SELECT * FROM Orders WHERE Amount BETWEEN ?1 AND 2?;")
.setParameter(1, "startAmt")
.setParameter(2, "endAmt")
.getResultList();
return amountsBetween;
}
}
【问题讨论】:
标签: java sql spring-boot spring-data-jpa