Фильтровать дочернюю сущность при получении родительской сущности - PullRequest
0 голосов
/ 02 мая 2018

Я хочу получить первый дочерний элемент вместо целого дочернего списка при получении родительского объекта. На основании обновленной даты дочерней сущности.

Моя родительская сущность:

@Entity
@Table(name = "financial_aid_request_table")
public class FinancialAidRequestEntity extends BaseAuditingEntity {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id")
    private Integer id;


    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,mappedBy= "financialAidRequest")
    private List<FARWorkFlowHistoryEntity> farWorkFlowHistory;

}

Мой ребенок, сущность:

    @Entity
    @Table(name = "far_workflow_history_table")
    public class FARWorkFlowHistoryEntity extends BaseAuditingEntity {

        private static final long serialVersionUID = 1L;
        @Id
        @Column(name = "far_workflow_history_id")
        @GeneratedValue(strategy = GenerationType.SEQUENCE)
        private Integer farWorkflowHistoryId;

        @ManyToOne
        @JoinColumn(name = "financialAidRequestId")
        private FinancialAidRequestEntity financialAidRequest;
        @Column(name = "updated_date")
        @NotNull(message = "Update date is mandatory")
        private Timestamp updatedDate;

    }

Репозиторий:

public interface FinancialAidRequestRepository extends JpaRepository<FinancialAidRequestEntity, Integer> {


    List<FinancialAidRequestEntity> findTopByOrderByFarWorkFlowHistoryUpdatedDateDesc(Integer schoolId);
}

При выполнении этого я получаю следующую ошибку во время выполнения:

java.util.NoSuchElementException

Я использую весеннюю загрузку с базой данных JPA и pgsql. Есть ли способ сделать фильтрацию таким образом? Ваша помощь будет по достоинству оценена. Заранее спасибо.

1 Ответ

0 голосов
/ 02 мая 2018

Я решил это следующим кодом в родительской сущности.

@Entity
@Table(name = "financial_aid_request_table")
public class FinancialAidRequestEntity extends BaseAuditingEntity {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id")
    private Integer id;


    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,mappedBy= "financialAidRequest")
    private List<FARWorkFlowHistoryEntity> farWorkFlowHistory;
@ManyToOne(fetch = FetchType.LAZY)
    @JoinFormula("(" +
        "SELECT h.far_workflow_history_id " +
        "FROM tten_farservice_far_workflow_history_table h " +
        "WHERE h.financial_aid_request_id = id " +
        "ORDER BY h.updated_date DESC " +
        "LIMIT 1" +
    ")")
    private FARWorkFlowHistoryEntity latestHistory;

}

Надеюсь, этот ответ поможет другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...