Как решить ошибку Проверка не удалось для запроса для метода public abstract java.util.List com.me.AppRepository.fetchEmpDeptDataLeftJoin ()? - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь сделать LEFT JOIN в моем загрузочном приложении Spring. Я создал DTO, и в настоящее время у меня есть два класса сущностей, которые связаны с таблицей в моей базе данных. Однако, когда я запускаю проект, он выдает ошибку Validation failed for query for method public abstract java.util.List com.me.AppRepository.fetchEmpDeptDataLeftJoin(). Я полагаю, что эта ошибка говорит о том, что мой запрос не корректируется скомпилирован, или это неправильный синтаксис. Я потерян в том, что делать дальше, я ищу некоторую помощь, чтобы решить эту проблему. Прошло две недели.

У меня есть две таблицы: AVSApplication AVSMapped Я хочу взять три поля из avs и объединить их с одним столбцом mGpStatus поля из mapped, где совпадают коды приложений. К вашему сведению: НЕТ ИНОСТРАННЫХ КЛЮЧЕЙ

Ошибка:

Validation failed for query for method public abstract java.util.List com.me.AppRepository.fetchEmpDeptDataLeftJoin()!

Субъекты:


@Entity
@Table(name = "avs")
public class AVSApplication implements java.io.Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "appcode")
    private String appcode;

    @Column(name = "acro")
    private String acro;

    @Column(name = "appname")
    private String appname;


    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "mGpStatus")
    @Fetch(FetchMode.JOIN)
    private AVSMapped avsMapped;

Сопоставленный объект:


@Entity
@Table(name = "mapped")
public class AVSMapped implements java.io.Serializable  {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "mAppcode")
    private String mAppcode;

    @Column(name = "mAcro")
    private String mAcro;

    @Column(name = "mAppname")
    private String mAppname;

    @Column(name = "mGpStatus")
    private String mGpStatus;

    @OneToMany(targetEntity = AVSApplication.class, mappedBy = "avsMapped", fetch = FetchType.LAZY)
    private Set<AVSApplication> avsApplication;

Репозиторий приложений:


@Repository
public interface AppRepository extends JpaRepository<AVSMapped, String>{


    @Query(value="SELECT new com.me.model.ApplicationDTO(e.appcode, e.acro, e.appname, d.mGpStatus) FROM AVSMapped d LEFT JOIN d.avsMapped e ON d.mAppcode=e.appcode")
    List<ApplicationDTO> fetchEmpDeptDataLeftJoin();


}
...