2011-06-26 44 views
3

我有一個錯誤,我無法擺脫,但代碼在同一時間工作。JPA2錯誤驗證:狀態字段無法解析

@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

嘗試此查詢,

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

我還是得到了錯誤:狀態域路徑「d.docteur_ID」無法解析轉換爲有效的類型。 –

+0

你可以發佈Docteur類嗎? – telm

+0

是的沒有麻煩。 –