Я пытаюсь сделать 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();
}