LuCallingRequestCase.java
< pre class="lang-java Prettyprint-override">
Код: Выделить всё
@Data
@Builder
@Table
@NoArgsConstructor
@AllArgsConstructor
public class LuCallingRequestCase implements Serializable {
@Id
private Long luCallingRequestCaseId;
private Long luProsecutionWorkRequestTypeId;
private CommonInfo commonInfo;
}
Код: Выделить всё
@Data
@Builder
public class CommonInfo {
@NonNull
private final String createdBy;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy HH:mm:ss", timezone = "GMT+2")
private final Instant createdAt;
private String updatedBy;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy HH:mm:ss", timezone = "GMT+2")
private Instant updatedAt;
@Builder.Default
private boolean isActive = true;
@Builder.Default
private boolean isUsed = false;
@Builder.Default
@JsonProperty("isDeleted")
private boolean isDeleted = false;
}
Код: Выделить всё
CREATE TABLE LU_CALLING_REQUEST_CASE
(
LU_CALLING_REQUEST_CASE_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY NOT NULL,
LU_PROSECUTION_WORK_REQUEST_TYPE_ID NUMBER NOT NULL,
COMMON_INFO JSON DEFAULT '{
"createdBy": null,
"updatedBy": null,
"createdAt": null,
"updatedAt": null,
"isActive": true,
"isUsed": false,
"isDeleted": false
}',
CONSTRAINT FK4_PROSECUTION_WORK_REQUEST_TYPE FOREIGN KEY (LU_PROSECUTION_WORK_REQUEST_TYPE_ID) REFERENCES LU_PROSECUTION_WORK_REQUEST_TYPE (LU_PROSECUTION_WORK_REQUEST_TYPE_ID) ON DELETE CASCADE
);
Код: Выделить всё
@Repository
public interface LuCallingRequestCaseRepository extends PagingAndSortingRepository, CrudRepository {
// Query to count records based on available filter without using 'isDeleted'
@Query("""
SELECT COUNT(*)
FROM LU_CALLING_REQUEST_CASE
WHERE ( LU_PROSECUTION_WORK_REQUEST_TYPE_ID = :prosecutionWorkTypeId OR :prosecutionWorkTypeId IS NULL )
""")
int countByFilter(Long prosecutionWorkTypeId);
// Query to find records with pagination
@Query("""
SELECT
LU_CALLING_REQUEST_CASE_ID,
LU_PROSECUTION_WORK_REQUEST_TYPE_ID,
JSON_SERIALIZE(LU_PROSECUTION_WORK_REQUEST_TYPE_IDS) AS LU_PROSECUTION_WORK_REQUEST_TYPE_IDS,
JSON_SERIALIZE(LU_CASE_TYPE_IDS) AS LU_CASE_TYPE_IDS
FROM LU_CALLING_REQUEST_CASE
WHERE ( LU_PROSECUTION_WORK_REQUEST_TYPE_ID = :prosecutionWorkTypeId OR :prosecutionWorkTypeId IS NULL )
ORDER BY LU_CALLING_REQUEST_CASE_ID
OFFSET :offset ROWS FETCH NEXT :limit ROWS ONLY
""")
List findByFilter(
@Param("offset") int offset,
@Param("limit") int limit,
Long prosecutionWorkTypeId);
// Query to find a specific record by LU_CALLING_REQUEST_CASE_ID
@Query("""
SELECT
LU_CALLING_REQUEST_CASE_ID,
LU_PROSECUTION_WORK_REQUEST_TYPE_ID,
JSON_SERIALIZE(LU_PROSECUTION_WORK_REQUEST_TYPE_IDS) AS LU_PROSECUTION_WORK_REQUEST_TYPE_IDS,
JSON_SERIALIZE(LU_CASE_TYPE_IDS) AS LU_CASE_TYPE_IDS
FROM LU_CALLING_REQUEST_CASE
WHERE LU_CALLING_REQUEST_CASE_ID = :callingRequestCaseId
""")
Optional findByCallingRequestCaseId(
@Param("callingRequestCaseId") Long callingRequestCaseId);
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ith-stored
Мобильная версия