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

发布于 2024-11-17 08:04:17 字数 2506 浏览 7 评论 0原文

我有一个无法消除的错误,但代码同时可以工作。

@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;
}

}

I have a error that I can not get rid of, but the code works in the same time.

@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")

the Error Eclipse give me is this :

The state field path 'd.docteur_ID' cannot be resolved to a valid
type.

I got the same error with this query too

@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;
}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

離人涙 2024-11-24 08:04:17

尝试这个查询,

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

Try this query,

SELECT d
FROM Clinique cli JOIN cli.docteurs d
WHERE cli.clinique_ID = :clinique_ID
AND d.docteur_ID = :docteur_ID
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文