2013-08-02 68 views
0

我不知道這是甚至可能在休眠。獲取沒有被映射到Hibernate中的bean類型列表

我可以通過Hibernate的getSession()獲取bean類型列表(尚未映射)嗎?

我想要做的是從查詢中獲取兩個值。這些值來自不同的表格。我已經完成了我的查詢,但是當我嘗試執行getSession時,它說我的類沒有被映射。 我不映射它,因爲沒有要映射的表。我創建了一個名爲ObjetivoAdapter的類,其中包含兩個字符串(我需要放入列表中的信息)。 另外我創建了這個類,因爲我需要我的信息列表。

這些是我從中獲得信息的表格:

表:producto。 列:descripcion。 列:codigo_barras

表:objetivo。 列:codigo_barras_objetivo(FK與表producto的codigo_barras)。 柱:promocion_id(FK從表promocion ID)

表:promocion 列:ID

這是我的級bean ObjetivoAdapter:

public class ObjetivoAdapter { 

    private String nombreProducto; 
    private String codigoBarrasObjetivo; 

    public void ObjetivoAdapter(String nombreProducto, String codigoBarrasObjetivo) { 
     this.nombreProducto = nombreProducto; 
     this.codigoBarrasObjetivo = codigoBarrasObjetivo; 
    } 

    public String getCodigoBarrasObjetivo() { 
     return codigoBarrasObjetivo; 
    } 

    public void setCodigoBarrasObjetivo(String codigoBarrasObjetivo) { 
     this.codigoBarrasObjetivo = codigoBarrasObjetivo; 
    } 

    public String getNombreProducto() { 
     return nombreProducto; 
    } 

    public void setNombreProducto(String nombreProducto) { 
     this.nombreProducto = nombreProducto; 
    } 

} 

這是我的查詢:

public List<ObjetivoAdapter> getInfo(String codBarras) { 
     String sql = "SELECT o.codigo_barras_objetivo, p.descripcion_corta FROM objetivo o " 
       + "INNER JOIN producto p ON o.codigo_barras_objetivo = p.codigo_barras " 
       + "INNER JOIN promocion pr ON o.promocion_id = pr.id " 
       + "WHERE codigo_barras = ' " + codBarras + "';"; 
     List<ObjetivoAdapter> listaOA = getSession().createSQLQuery(sql).addEntity(ObjetivoAdapter.class).list(); 
     return listaOA; 
    } 

任何幫助將不勝感激。

回答

1

使用setResultTransformer(AliasToBeanResultTransformer)而不是addEntity(),所有應罰款

+0

感謝您的幫助。我遇到了同樣的錯誤:{org.hibernate.MappingException:對於JDBC類型,沒有Dialect映射:-1 – Blackmore

+0

更改方言或檢查SQLQuery.addScalar()強制Hibernate將數據庫類型映射到衆所周知的Hibernate類型。我認爲Hibernate.STRING會很好。或者你可以在你的sql中應用一個cast()。如果這些解決方案不能解決您的問題,您必須調試一下 –

+0

它與addScalar一起工作,但現在說結果不能被鑄造java.lang.ClassCastException:org.hibernate.impl.SQLQueryImpl不能轉換爲java.util無論如何,問題是用addScalar回答的。 – Blackmore