【问题标题】:org.hibernate.QueryException: could not resolve property: Hermanos of: comorg.hibernate.QueryException:无法解析属性:Hermanos of:com
【发布时间】:2014-08-28 18:20:05
【问题描述】:

有谁知道我为什么会收到这个错误:

org.hibernate.QueryException: could not resolve property: Hermanos of: com.sahe.model.SalidasProcesionales [FROM com.sahe.model.SalidasProcesionales u LEFT JOIN FETCH u.Hermanos LEFT JOIN FETCH u.PTipoTramo LEFT JOIN FETCH u.Insignias]

当我调用这个方法时:

@Override
public List<SalidasProcesionales> findAll() {
    List<SalidasProcesionales> listadoSalidasProcesionales = null;
    Session sesion = HibernateUtil.getSessionFactory().getCurrentSession();
    String hql = "FROM SalidasProcesionales u LEFT JOIN FETCH u.Hermanos LEFT JOIN FETCH u.PTipoTramo LEFT JOIN FETCH u.Insignias";
    try {
        sesion.getTransaction().begin();
        listadoSalidasProcesionales = sesion.createQuery(hql).list();
        sesion.getTransaction().commit();
    } catch (Exception e) {
        sesion.getTransaction().rollback();
        e.printStackTrace();
    }
    return listadoSalidasProcesionales;
}

通过

this.salidasProcesionales = new ArrayList<SalidasProcesionales>();

谢谢。

实体是:

@实体 @Table(name = "salidas_procesionales", 目录 = "sahe") 公共类 SalidasProcesionales 实现 java.io.Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private Integer codigo;
private Insignias insignias;
private Hermanos hermanos;
private PTipoTramo PTipoTramo;
private int anyo;

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "codigo", unique = true, nullable = false)
public Integer getCodigo() {
    return this.codigo;
}

public void setCodigo(Integer codigo) {
    this.codigo = codigo;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "insignia", nullable = false)
public Insignias getInsignias() {
    return this.insignias;
}

public void setInsignias(Insignias insignias) {
    this.insignias = insignias;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "codigoHermano", nullable = false)
public Hermanos getHermanos() {
    return this.hermanos;
}

public void setHermanos(Hermanos hermanos) {
    this.hermanos = hermanos;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tipoTramo", nullable = false)
public PTipoTramo getPTipoTramo() {
    return this.PTipoTramo;
}

public void setPTipoTramo(PTipoTramo PTipoTramo) {
    this.PTipoTramo = PTipoTramo;
}

@Column(name = "anyo", nullable = false)
public int getAnyo() {
    return this.anyo;
}

public void setAnyo(int anyo) {
    this.anyo = anyo;
}
}

我已经删除了长度的构造函数。

【问题讨论】:

  • 请添加您的SalidasProcesionales 实体,并将Hermanos 更改为hermanos
  • 嘿!你是对的!也许几个小时的编程不会让你看到这些小细节......谢谢!如果您创建一个答案,我可以给您一个积极的回应。

标签: hibernate


【解决方案1】:

JPQLHQL 中编写连接时,需要使用属性,而不是实体,因此需要:

"FROM SalidasProcesionales u" + 
" LEFT JOIN FETCH u.hermanos" +   // because the property is Hermanos hermanos;
" LEFT JOIN FETCH u.PTipoTramo" + // because the property is PTipoTramo PTipoTramo;
" LEFT JOIN FETCH u.insignias";   // because the property is Insignias insignias;

此外,如果您只使用 select 查询,则不需要事务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多