Hibernate忽略了类&映射

时间:2016-11-09 19:33:56

标签: c# spring hibernate nhibernate nhibernate-mapping

我似乎经常遇到这个问题。

我设置了一个新课程。 我设置了一个新的hbm.xml映射并使其成为嵌入式资源。 我将运行我的应用程序,它会告诉我属性名称不匹配〜最常见的是类和映射之间属性名称的案例问题。特定错误" no getter / setter"对于映射中显示的名称。

但这不是问题的关键,我解决了这个问题。

现在所有拼写错误都已修复,但现在休眠并没有做任何事情。它完全忽略了整合。它不会调用SQL服务器,我知道因为我在SQL服务器端跟踪它。我甚至可以更改映射所指向的视图的名称,就好像我甚至不需要映射〜因为hibernate只是忽略它以及与此类有关的所有内容。

如果我打开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日志记录文件中记录了关于节点/ vNode的注意事项〜甚至没有在DEBUG级别记录。记录同一DAO中的其他方法和类。但没有关于这个。

我宁愿在帮助我理解需要解决的问题时遇到一些错误。

我经常使用这种模式/架构,它的工作非常出色。但是在很多场合,我开始一个新的类/实体/整合,并且我第一次得到了连续的鸭子。

尊重&amp;升值

1 个答案:

答案 0 :(得分:0)

今天恰好发生的问题是映射的文件名是&#34; Nodes.hdm..xml&#34;。 不知道两个点如何在那里获得文件扩展名。

我忘记的是hibernate如何在可执行文件的嵌入资源的资源列表中使用文件的名称。文件名和hibernate中的任何小错误都不知道它有一个需要使用的资源。