저번 알람 타임라인 중복 에러를 해결할 때 중복으로 보이는 것을 막기 위해 보여지는 알람 시간을 미션을 수행한 시간으로 수정했습니다.
하지만 여전히 정렬이 alarm time 기준으로 되어 있어 타임라인의 순서가 섞이는 에러가 있었습니다.
따라서 현재 시간 이전의 타임라인에 대해서는 미션 수행 시간으로 정렬하여 해당 에러를 해결했습니다.
또한 프레임워크 숙련도 이슈로 mission object 테이블이 cross join되고 있는 것을 발견했습니다.
부모 엔티티에서 필드를 가져오는 것과 조인한 결과에서 가져오는 두 가지 방식을 혼용하고 있었기 때문에 cross join이 발생했습니다.
명시적으로 조인한 결과에서 가져오는 방식으로 통일하여 같은 테이블이지만 다른 2개의 테이블을 cross join하는 것을 방지했습니다.
☀️ 참고 사항
[이전 쿼리]
select
alarm0_.id as col_0_0_,
missionobj2_.icon as col_1_0_,
alarm0_.alarm_time as col_2_0_,
alarm0_.name as col_3_0_,
missionobj1_.kr as col_4_0_,
alarm0_.room_id as col_5_0_
from
alarm alarm0_
inner join
mission_object missionobj1_
on (
alarm0_.mission_object_id=missionobj1_.id
) cross
join
mission_object missionobj2_
where
(
alarm0_.is_deleted = 0
)
and alarm0_.mission_object_id=missionobj2_.id
and alarm0_.user_id=?
and (
alarm0_.thursday=?
or alarm0_.monday=?
and alarm0_.tuesday=?
and alarm0_.wednesday=?
and alarm0_.thursday=?
and alarm0_.friday=?
and alarm0_.saturday=?
and alarm0_.sunday=?
)
and alarm0_.is_activated=?
and alarm0_.is_deleted=?
and alarm0_.alarm_time>=?
order by
alarm0_.alarm_time asc,
alarm0_.id asc
[이후 쿼리]
select
alarm0_.id as col_0_0_,
missionobj1_.icon as col_1_0_,
alarm0_.alarm_time as col_2_0_,
alarm0_.name as col_3_0_,
missionobj1_.kr as col_4_0_,
alarm0_.room_id as col_5_0_
from
alarm alarm0_
inner join
mission_object missionobj1_
on alarm0_.mission_object_id=missionobj1_.id
where
(
alarm0_.is_deleted = 0
)
and alarm0_.user_id=?
and alarm0_.is_deleted=?
and alarm0_.is_activated=?
and alarm0_.alarm_time>=?
and (
alarm0_.thursday=?
or alarm0_.monday=?
and alarm0_.tuesday=?
and alarm0_.wednesday=?
and alarm0_.thursday=?
and alarm0_.friday=?
and alarm0_.saturday=?
and alarm0_.sunday=?
)
order by
alarm0_.alarm_time asc,
alarm0_.id asc
☀️ 작업 사항
저번 알람 타임라인 중복 에러를 해결할 때 중복으로 보이는 것을 막기 위해 보여지는 알람 시간을 미션을 수행한 시간으로 수정했습니다. 하지만 여전히 정렬이 alarm time 기준으로 되어 있어 타임라인의 순서가 섞이는 에러가 있었습니다.
따라서 현재 시간 이전의 타임라인에 대해서는 미션 수행 시간으로 정렬하여 해당 에러를 해결했습니다.
또한 프레임워크 숙련도 이슈로 mission object 테이블이 cross join되고 있는 것을 발견했습니다. 부모 엔티티에서 필드를 가져오는 것과 조인한 결과에서 가져오는 두 가지 방식을 혼용하고 있었기 때문에 cross join이 발생했습니다.
명시적으로 조인한 결과에서 가져오는 방식으로 통일하여 같은 테이블이지만 다른 2개의 테이블을 cross join하는 것을 방지했습니다.
☀️ 참고 사항
[이전 쿼리]
[이후 쿼리]