私はこの問題がたくさんあるようです。Hibernateはクラスとマッピングを無視します
私は新しいクラスをセットアップしました。 新しいhbm.xmlマッピングを設定し、埋め込みリソースにしました。 私のアプリケーションを実行すると、属性名の不一致〜クラスとマッピングの間の属性の名前の大文字小文字の問題があります。マッピングに示されている名前の特定のエラー「getter/setter」がありません。
しかし、それはこの疑問の要点ではありません。私はそれを修正しました。
すべてのタイプミスは修正されましたが、現在は休止状態で何もしません。それは単に統合を完全に無視します。それはSQLサーバー側をトレースするので、私は知っているSQLサーバーを呼び出すことはありません。私は、マッピングが指されているビューの名前を変更することさえできます。これは、ハイバネートがそれを無視しているため、このクラスに関してすべてを無視しているためです。
休止状態ログ(log4net)をDEBUGレベルにすると、他のSQLエンティティはロギングに表示されますが、新しいものは表示されません。
これをどのようにトラブルシューティングしますか?
以前は、マッピングとSQLエンティティの間に何かが完全に存在していないことがありました。そして、時には私はそれらの2つのアヒルを連続して取得すると、仕事が始まります。
もう一度この問題のトラブルシューティングを行いますか? 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;
}
DEBUGレベルであっても、ハイバネートロギングファイルのノード/ vNodeについて記録されています。同じDAO内の他のメソッドとクラスがログに記録されます。しかし、これについては何もありません。
私は、何を修正する必要があるのか理解するのに役立ついくつかのエラーがあります。
私はこのパターン/アーキテクチャを多く使用しており、それは驚異的です。しかし、多くの機会に私は新しいクラス/エンティティ/統合を開始し、最初にアヒルを連続して取得しています。
尊重&感謝