我正在使用Hibernate的JPA實現,並且由於爲獲取的每個實體發出了多個SQL查詢,因此性能很差。如果我使用加入的JPA查詢,它只會生成一個SQL查詢,但不會查找行將爲空的關係。 例如,考慮這個簡單的模式。一個人住在一個地址,並受僱於一家公司。地址和僱主都是可選的,因此可以爲空。 @Entity
public class Person {
public name;
在SQL可以編寫一個查詢,搜索一個人的這樣一個名字: SELECT * FROM Person P WHERE P.Name LIKE N'%ike%'
此查詢將Unicode字符(假設名稱列和數據庫都安裝運行處理unicode支持)。 我在HQL(NHibernate)運行的HQL中有類似的查詢。生成的查詢如下所示: SELECT P FROM SumTotal.TP.Models.Part
ScalarQuery<int> query = new ScalarQuery<int>(typeof(Role),
"select count(role.RoleId) from Role as role");
return query.Execute();
它失敗,出現invalidcast異常,但在計數被max替換後成功。
我試圖使用標準的API來編寫以下HQL查詢: var userList = _session
.CreateQuery("select u from User u where u.Role.ID=3 and u.Customer.ID=:cID")
.SetInt32("cID", 1)
.List<User>();
(3個NHibernate的