2015-09-05 26 views
2

在休眠狀態下,我正在編寫一個搜索表單贏得Swing。 爲此目的:Hibernate:Createsqlquery ..在爲我的實體獲取某些列時的錯誤

  1. 我有我的10個區域實體A,但在這個搜索的情況下,只是我需要的,同一實體,只有5場/列。
  2. 我想用SQL本地查詢:

SELECT cli.field1, cli.field2, cli.field3, cli.field4 cli.field5 FROM sells.customers ...查詢PostgreSQL中

  • 但當我補充一下:
  • .addEntity(Entity.class)

    1. Hibernate拋出無法找到其餘部分的異常lumns。顯然,如果只有我把SELECT * from sells.customers錯誤不會出現。但我必須做一個SQL查詢的性能。

    問題:如何告訴hibernate -in SQL本地查詢 - 只返回這五列或者字段,但是使用了前面提到的同一個實體。

    感謝

    回答

    0

    你應該能夠做這樣的事,只要你創建額外的構造函數,你的實體,但只有那些少數領域 - 所以假設你想如從Person表查詢僅姓氏和名字,它應該是這樣的:

    public Person(String firstName, String lastName) { 
        this.firstName = firstName; 
        this.lastName = lastName; 
    } 
    

    你的查詢可以再與此類似:

    SELECT new Person(p.firstName, p.lastName) FROM Person p WHERE p.lastName = :lastName 
    

    更多的例子可以直接在Hibernate tutorial

    被發現
    1

    感謝您的提示... 幸運我做了一些更改:

    1. 實體是一樣的。
    2. 刪除.addEntity(...)並將其替換爲:

      SQLQuery query = getCurrentSession().createSQLQuery(sqlquery);

    3. 下一行是:

      return query.setResultTransformer(Transformers.aliasToBean(entityClass)).list();

    這一行,我強迫返回項目與entityClass類型,無論我只選擇了五列。列表中的每一行都有一個entityClass對象,只有五個屬性提取數據。剩餘的屬性(不在主查詢中選擇)爲空。

    相關問題