请考虑以下事项:
interface TicketRepository extends JpaRepository<Ticket, Integer> {
List<Ticket> findByOpenDateBetweenOrCloseDateBetweenAndPersonIdAndType(Timestamp start1, Timestamp end1, Timestamp start2, Timestamp end2, Integer personId, TicketType type)
}
生成以下SQL:
select
ticket0_.id as id1_10_,
ticket0_.close_date as close_da2_10_,
ticket0_.complaint as complain3_10_,
ticket0_.connection_id as connecti4_10_,
ticket0_.district_id as district5_10_,
ticket0_.open_date as open_dat6_10_,
ticket0_.person_id as person_i7_10_,
ticket0_.public_id as public_i8_10_,
ticket0_.ticket_queues_id as ticket_q9_10_,
ticket0_.ticket_statuses_id as ticket_10_10_,
ticket0_.ticket_types_id as ticket_11_10_,
ticket0_.users_id as users_i12_10_
from
ticket_tickets ticket0_
left outer join
ticket_types tickettype1_
on ticket0_.ticket_types_id=tickettype1_.id
where
ticket0_.open_date between ? and ?
or (
ticket0_.close_date between ? and ?
)
and ticket0_.person_id=?
and tickettype1_.id=?
我需要的是两个BETWEEN都在同一个括号中,如下所示:
( ticket0_.open_date between ? and ? OR ticket0_.close_date between ? and ? )
我是否可以通过更改方法名称来实现此目的,或者我必须采用自定义@Query方法?
答案 0 :(得分:1)
使用 @Query 方法。它简单得多。应使用查询构建器机制来编写简单查询。您还将提高代码的可读性。