我似乎有這個問題很多。休眠忽略類和映射
我設置了一個新類。 我設置了一個新的hbm.xml映射並使其成爲一個嵌入式資源。 我將運行我的應用程序,它會告訴我我的屬性名稱不匹配 - 通常是類和映射之間屬性名稱中的一個案例問題。特定錯誤「no getter/setter」作爲映射中顯示的名稱。
但這不是這個問題的關鍵,我解決了這個問題。
現在所有的拼寫錯誤都是固定的,但現在hibernate並沒有做任何事情。它完全忽視了整合。它不會調用SQL服務器,我知道是因爲我在SQL服務器端跟蹤了它。我甚至可以更改映射指向的視圖的名稱,就好像我甚至不需要映射〜因爲hibernate只是忽略它和所有與此類有關的東西。
如果我打開休眠日誌記錄(log4net)爲DEBUG級別。其他sql實體顯示在日誌中,但不是我的新實體。
你如何解決這個問題?
在過去,我曾經看到過有時候映射和SQL實體之間的東西並不完美。有時當我連續得到這兩隻鴨子時,事情就開始奏效了。
同樣,您如何解決這個問題? nHibernate是如何將映射映射到SQL的,以及它發現它不喜歡它的東西只是忽略它。
這是我的課:
public class Nodes {
public virtual Int64 Id { get; set; }
public virtual Int64 NodeId { get; set; }
public virtual string Node { get; set; }
}
這是我的地圖:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false" assembly="Prj" namespace="Prj.Nodes.Domain" default-lazy="false">
<class name ="Nodes" table="dbo.vNodes" dynamic-update="false" lazy="false">
<cache usage="read-only"/>
<id name="Id" column="Id" type="Int64">
<generator class="native" />
</id>
<property name="NodeId" />
<property name="Node" />
</class>
</hibernate-mapping>
這是我的SQL:
create table Nodes
(
Id bigint identity(1,1) not null
, NodeId bigint not null
, Node varchar(10) null
)
insert into Nodes (NodeId, Node) values (100, 'Hello')
go
create view vNodes
as
select
Id
, NodeId
, Node
from Nodes with (NoLock)
go
這是我的應用程序從在(方法DOA):
using NHibernate;
public List<Nodes> LoadNodes()
{
ICriteria c = NHibernateSessionManager.Instance.GetSession().CreateCriteria(typeof(Nodes));
List<Nodes> n = c.List<Nodes>().ToList<Nodes>();
return n;
}
在hibernate日誌記錄文件中記錄了有關Nodes/vNodes的記錄〜即使在DEBUG級別也是如此。記錄相同DAO中的其他方法和類。但沒有關於這個。
我寧願有一些錯誤在哪裏幫助我瞭解我需要解決的問題。
我使用這種模式/架構很多,它非常有效。但是,當我開始一個新的班級/實體/整合並且首先讓鴨子連續獲得時,我會多次嘗試。
尊重&升值