JPA2错误验证:无法解析状态字段

时间:2011-06-26 03:43:40

标签: hibernate jpa-2.0 named-query

我有一个错误,我无法摆脱,但代码同时工作。

@NamedQuery(name="getDocteur", query="SELECT d FROM Clinique cli, IN (cli.docteurs) AS d WHERE cli.clinique_ID=:clinique_ID AND d.docteur_ID=:docteur_ID")
错误Eclipse给我的是:

  

状态字段路径“d.docteur_ID”无法解析为有效   类型。

我也遇到了同样的错误

@NamedQuery(name="validUsername", query="SELECT u FROM Clinique cli, IN (cli.users) AS u WHERE cli.clinique_ID=:clinique_ID AND u.username=:username AND u.password=:password")



User.java 
...

@Column(name="PASSWORD", nullable=false)
    @NotNull
    @Size(min=8, max=8)
    private String password;



Docteur.java

package com.jerabi.model;

import java.io.Serializable;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import java.util.ArrayList;
import java.util.List;


/**
 * The persistent class for the docteur database table.
 * 
 */
@Entity
@Table(name="Docteur",
        uniqueConstraints={@UniqueConstraint(columnNames={"clinique_Clinique_ID", "nom", "prenom"})}
)
public class Docteur implements Serializable {
    private static final long serialVersionUID = 1L;

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="DOCTEUR_ID")
private Integer docteur_ID;

@Column(name="Nom", nullable=false)
@NotNull
@Size(min=1, max=40)
private String nom;

@Column(name="Prenom", nullable=false)
@NotNull
@Size(min=1, max=40)
private String prenom;

@ManyToOne(optional=false)
private Clinique clinique;

//bi-directional many-to-one association to Patient
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH}, orphanRemoval=false, mappedBy="docteur")
private List<Patient> patients;

public Docteur() {
    patients = new ArrayList<Patient>();
}

public Integer getDocteur_ID() {
    return this.docteur_ID;
}

public void setDocteur_ID(Integer docteurId) {
    this.docteur_ID = docteurId;
}

public String getNom() {
    return this.nom;
}

public void setNom(String nom) {
    this.nom = nom;
}

public String getPrenom() {
    return this.prenom;
}

public void setPrenom(String prenom) {
    this.prenom = prenom;
}

public List<Patient> getPatients() {
    return this.patients;
}

public void setPatients(List<Patient> patients) {
    this.patients = patients;
}

public Clinique getClinique() {
    return clinique;
}

public void setClinique(Clinique clinique) {
    this.clinique = clinique;
}

}

1 个答案:

答案 0 :(得分:1)

尝试此查询,

SELECT d
FROM Clinique cli JOIN cli.docteurs d
WHERE cli.clinique_ID = :clinique_ID
AND d.docteur_ID = :docteur_ID