Java ID使用JPA查询中的标识符无效
我得到了错误。ORA-00904:“TIPOINCIDE1”.“IDTIPO”:当我尝试使用注释@NamedQuery在JPQL中运行查询时,标识符无效 当只对一个实体执行查询时,它会工作,但当创建一个与多个实体相关的查询时,它会中断 这是我的代码:Java ID使用JPA查询中的标识符无效,java,sql,jpa,jpa-2.0,jpql,Java,Sql,Jpa,Jpa 2.0,Jpql,我得到了错误。ORA-00904:“TIPOINCIDE1”.“IDTIPO”:当我尝试使用注释@NamedQuery在JPQL中运行查询时,标识符无效 当只对一个实体执行查询时,它会工作,但当创建一个与多个实体相关的查询时,它会中断 这是我的代码: @Entity @Table public class TipoIncidencia { @Id @Column(name="IDTIPO") private int id; private St
@Entity
@Table
public class TipoIncidencia {
@Id
@Column(name="IDTIPO")
private int id;
private String descripcion;
private int valor;
public TipoIncidencia() {
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public int getValor() {
return valor;
}
public void setValor(int valor) {
this.valor = valor;
}
}
这是我的Incidencia类,它创建查询并与TipoIncidencia有关系:
TipoIncidencia班
@Entity
@Table
@NamedQueries({
@NamedQuery(name="Incidencia.test", query="SELECT i.ti.descripcion FROM Incidencia i")
})
public class Incidencia {
@Id
private Date fecha;
@ManyToOne
@JoinColumn(name="nif")
private Conductor conductor;
private String anotacion;
@ManyToOne
@JoinColumn(name="IDTIPO")
private TipoIncidencia ti;
public String getAnotacion() {
return anotacion;
}
public void setAnotacion(String anotacion) {
this.anotacion = anotacion;
}
}
这是查询的调用,我使用的是DAO模式:
public class IncidenciaDAO extends JpaDAO<Incidencia, String>{
public IncidenciaDAO(EntityManager em) {
super(em);
}
@Override
public List<Incidencia> findAll() {
return entityManager.createNamedQuery("Incidencia.findAll", Incidencia.class).getResultList();
}
public List ranking() {
List m = entityManager.createNamedQuery("Incidencia.test").getResultList();
return m;
}
}
尝试指定引用的列名:@JoinColumn(name=“IDTIPO”,referencedColumnName=“IDTIPO”)。也。。。添加实际的2个表可能会导致相同的错误,请尝试您的解决方案。刚刚添加了mi tables结构。好的,请尝试删除TipoIncidencia类上的@Column(name),实际的列名是id,因此不需要注释。然后用@JoinColumn(name=“id”,referencedColumnName=“id”)替换Incidencia上的@JoinColumn即可。现在输出为:ORA-00904:“INCIDENCIA0”;“id”:无效标识或我的坏@JoinColumn(name=“idtipo”,referencedColumnName=“id”)
@Entity
@Table
public class Conductor {
@Id
@Column(name="ID_COND")
private int nif;
private String nombre;
private String apellido;
private String direccion;
private int cp;
private String ciudad;
private int puntos;
@ManyToOne
@JoinColumn(name="ASC_ID")
private Asociacion asociacion;
@OneToMany(mappedBy="conductor")
Set<Incidencia> incidencias;
#Getters and setters
}
TipoIncidencia(id (PK), descripcion, valor)
Incidencia(fecha (PK), nif (PK, FK -> Conductor), anotacion, idtipo (FK -> TipoIncidencia))
Conductor(nif (PK), nombre, apellido, direccion, cp, ciudad, puntos)