有誰知道如何將NHibernate HQL轉換爲SQL腳本?HQL to SQL轉換器
4
A
回答
2
由於HQL翻譯依賴於您的映射和運行時行爲,我認爲這是不太可能的靜態方法。
您可以針對真實數據庫運行HQL,並通過您的特定rdbms或NHProf的分析器捕獲生成的SQL。
0
我不熟悉所有的參數,但是這似乎工作:
ISessionFactory sessionFactory = ...
var sf = (SessionFactoryImpl) sessionFactory;
var hql = "from Person";
var qt = sf.Settings.QueryTranslatorFactory.CreateQueryTranslator("", hql, new Dictionary<string, IFilter>(), (ISessionFactoryImplementor) sessionFactory);
qt.Compile(new Dictionary<string, string>(), true);
var sql = qt.SQLString;
Console.WriteLine(sql);
0
我不知道什麼樣的價值自動轉換HQL到SQL是動態...
你到底想要完成什麼?
最簡單的方法是在運行SQL Server Profiler的同時運行代碼以查看生成的SQL。但更好的方法是下載nhProf(www.nhprof.com)並將其用於您的代碼。您將能夠精確地看到您的代碼在SQL中輸出的內容,並且會對它進行格式化和顏色編碼,並且還會提供有關如何改進對nhibernate的使用的提示。
0
與NHibernate 3.2,這似乎是從一個HQL查詢獲得SQL最簡單的方法:
private string GetSQL(string hql)
{
using (var iSession = ...)
{
var session = (NHibernate.Engine.ISessionImplementor)iSession;
var sf = (NHibernate.Engine.ISessionFactoryImplementor)iSession.SessionFactory;
var sql = new NHibernate.Engine.Query.HQLStringQueryPlan(hql, true, session.EnabledFilters, sf);
return string.Join(";", sql.SqlStrings);
}
}
1
我的老培訓。這是beta版本。這裏是! (hql2sql.jsp)
<SCRIPT type="text/javascript">
<%
org.hibernate.Session ThisSession = SessionFactory.getSession();
org.hibernate.engine.SessionImplementor ThisSessionImplementor = (org.hibernate.engine.SessionImplementor) ThisSession;
org.hibernate.engine.SessionFactoryImplementor ThisSessionFactory = (org.hibernate.engine.SessionFactoryImplementor) ThisSession.getSessionFactory();
String HQL_Query = "SELECT ... ";
String SQL_Query;
try{
org.hibernate.engine.query.HQLQueryPlan HQL_Query_Plan = new org.hibernate.engine.query.HQLQueryPlan(HQL_Query, true, ThisSessionImplementor.getEnabledFilters(), ThisSessionFactory);
SQL_Query = org.apache.commons.lang.StringUtils.join(HQL_Query_Plan.getSqlStrings(), ";");
}catch(Exception e){SQL_Query = "ERROR!! :: " + e.getMessage();}
%>
$(document).ready(function(){
$('span[role="HQL"]').text(" <%=HQL_Query%>");
$('span[role="SQL"]').text(" <%=SQL_Query%>");
});
</SCRIPT>
<div style="border:2px solid brown">
Ваш запрос на HQL:
<br/><br/><span role="HQL"> </span>
</div>
<br>
<div style="border:2px solid green">
Ваш запрос на SQL:
<br/><br/><span role="SQL"> </span>
</div>
相關問題
- 1. LINQ to SQL轉換器
- 2. createSQLQuery to HQL
- 3. Sql到Hql的轉換
- 4. 將sql轉換爲hql
- 5. 將SQL轉換爲HQL
- 6. 將SQL轉換爲HQL?
- 7. 如何將這個HQL轉換爲SQL
- 8. 轉換從SQL到HQL失敗
- 9. 在HQL(休眠)中轉換SQL查詢
- 10. LINQ to SQL轉換溢出
- 11. SQL轉換爲LINQ to Entities
- 12. 將sql查詢轉換爲Hql查詢
- 13. 將複雜的SQL轉換爲HQL?
- 14. 將SQL轉換爲HQL其中第
- 15. SQL日期時間轉換爲HQL
- 16. 將sql查詢轉換爲hql
- 17. 問題與轉換SQL到HQL
- 18. NetBeans HQL編輯器錯誤地轉換爲SQL
- 19. 將SQL轉換爲LINQ To SQL語句
- 20. QBO3 XML to JSON轉換器
- 21. Flex to Html/Ajax轉換器
- 22. .doc to plain text轉換器
- 23. Winnovative HTML to PDF轉換器
- 24. HTML to PDF轉換器
- 25. HQL到CriteriaQuery中轉換
- 26. 的LINQ to SQL無法轉換對象
- 27. SQL Server CE演變/轉換Double to String
- 28. LINQ to Entities:轉換SQL子選擇
- 29. LINQ to SQL中的轉換無效
- 30. C# - Linq to SQL,類型轉換錯誤
我正在使用MYSQL和NHProf。但它生成的SQL無法在數據庫中執行。 INSERT INTO Table1 (Column1,Column2,Column3,Column4,Column5) VALUES(?,?,?,?,?) – ranj 2009-11-22 07:17:51
好吧,這只是一個參數化查詢,上面的某處必須是參數聲明和初始化。我很肯定NHProf支持複製和粘貼SQL。否則請在此處詢問: http://groups.google.com/group/nhprof – 2009-11-22 08:12:22