2013-01-16 39 views
2

有沒有辦法從bean實例中生成Insert SQL查詢?也許使用Hibernate代碼?從對象中生成插入

例如:

@Table(name = "tbl_a") 
class A{ 

    @Column(name = "col_a") 
    int a; 

    @Column(name = "col_b") 
    int b; 
} 

插入到tbl_a(爲col_a,col_b)VALUES(安勤,bvalue)

所以,如果我將向它提供一個其中有一個= 「VAL」 A instacne和b = 5我將得到:

INSERT INTO tbl_a(col_a,col_b)VALUES('val',5) ??

編輯

看來我不明白舒服,所以讓我解釋一下:我知道如何與Hibernate持久。我想要的是生成SQL查詢本身的實際類。最終將提交給數據庫的相同查詢。但我需要查詢字符串。意思是說,我需要一個工具(或使用Hibernate的類)來獲取對象並返回一個包含SQL查詢的簡單字符串。 (不在日誌中)。

我希望現在好一點。

感謝,Idob

回答

1

OK開啓休眠調試測試,所以沒有工具,它得到一個對象,並返回一個包含query.But可以使用查詢類的getQueryString()方法的SQL一個簡單的字符串。除運行參數外,您將獲得整個HQL字符串。 如果您對SQL字符串感興趣,那麼您可以在Hibernate的log4j系統上啓用DEBUG,並使用JDBCAppender或某些自定義Appender來捕獲本機SQL。

無論如何,這個選項會讓你的應用非常慢(hibernate會產生很多調試)。

0

是的,你可以調用sessionFactory.getCurrentSession().save(new A())直接插入您的實例。執行的SQL看起來與您描述的相似。您可以通過做hibernate.show_sql=true

+0

不,我不想保存並查看日誌。我想要的是在運行時獲取查詢本身。實際的查詢字符串。我知道如何堅持Hibernate。 –