Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ID使用JPA查询中的标识符无效_Java_Sql_Jpa_Jpa 2.0_Jpql - Fatal编程技术网

Java ID使用JPA查询中的标识符无效

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

我得到了错误。ORA-00904:“TIPOINCIDE1”.“IDTIPO”:当我尝试使用注释@NamedQuery在JPQL中运行查询时,标识符无效

当只对一个实体执行查询时,它会工作,但当创建一个与多个实体相关的查询时,它会中断

这是我的代码:

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