この JPQL は以前は機能していましたが、理由もなく機能しなくなりました。私は今、この奇妙な例外を受け取ります:
java.lang.IllegalArgumentException: Parameter "Parameter<LandKod>('landKod')" declared in "SELECT r FROM Region r WHERE r.landKod = :landKod" is set to value of "US" of type "java.lang.String", but this parameter is bound to a field of type "se.prv.pandora.arendeprocess.entity.LandKod".
これは、私のコードで landKod という名前の名前の競合があることを示しているようです。ソースは次のとおりです。
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;
    }
}
これは、文字列をパラメーターとして許可するメソッドの実装です。
@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;
}
このエラーの修正を手伝ってもらえますか?