이 JPQL은 작동하지만 이전에는 아무 이유없이 고장났습니다. 이제 이상한 예외가 생깁니다 :내 JPQL이 작동하지 않는 이유는 무엇입니까?
이는 내 코드에서 landKod라는 이름의 충돌이 있음을 나타내는 것 같습니다.
이@Override
public List<Region> getRegionsByLandkod(String landKod) {
List<Region> regionsList = null;
try {
Query query = em.createNamedQuery("getRegionsByLandkod");
query.setParameter("landKod", landKod);
regionsList = (List<Region>) query.getResultList();
} catch(Exception e){
logger.info("Kunde inte hitta någon region med landkod: "+landKod, e);
}
return regionsList;
}
당신이 날이 오류를 해결하는 데 도움 수 :
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity(name = "Region")
@Table(name="TP197_REGION")
@NamedQueries({
@NamedQuery(name = "getAllValidRegions", query = "SELECT r FROM Region r WHERE r.histKod = 'A'"),
@NamedQuery(name = "getRegionsByLandkod", query = "SELECT r FROM Region r WHERE r.landKod = :landKod")
})
public class Region implements Serializable {
@Id
private int regionId;
@ManyToOne
@JoinColumn(name="landKod", referencedColumnName="landKod")
private LandKod landKod ;
private String histKod ;
private String regionForkort;
private String regionRubrik;
private String regionBeskr;
public Region() {
super();
}
public int getRegionId() {
return regionId;
}
public void setRegionId(int regionId) {
this.regionId = regionId;
}
public String getRegionForkort() {
return regionForkort;
}
public void setRegionForkort(String regionForkort) {
this.regionForkort = regionForkort;
}
public String getRegionRubrik() {
return regionRubrik;
}
public void setRegionRubrik(String regionRubrik) {
this.regionRubrik = regionRubrik;
}
public String getRegionBeskr() {
return regionBeskr;
}
public void setRegionBeskr(String regionBeskr) {
this.regionBeskr = regionBeskr;
}
public String getHistKod() {
return histKod;
}
public void setHistKod(String histKod) {
this.histKod = histKod;
}
public String getRegionFormatted() {
if(regionForkort!=null && regionForkort.length()>0) {
return regionForkort + " " + regionRubrik;
} else {
return regionRubrik;
}
}
public LandKod getLandKod() {
return landKod;
}
public void setLandKod(LandKod landKod) {
this.landKod = landKod;
}
}
여기가 매개 변수로 문자열을 수있는 방법을 구현의 : 여기에 소스는?
대답 주셔서 감사합니다. 제 동료가 Region 및 LandKod 클래스에 대한 업데이트를 수행했기 때문에 다음 문장 대신 'SELECT r FROM Region r WHERE r.landKod.landKod = : landKod' 명령으로 변경하여 문제를 해결할 수 있습니다. –