代码之家  ›  专栏  ›  技术社区  ›  Astaar

c 35;/nhibernate:关联引用未映射类

  •  12
  • Astaar  · 技术社区  · 16 年前

    几个小时来,我一直在为这个问题纠结。我在网上以及nhibernate文档上做了大量的研究,我对这个问题没有任何理解。我对NHibernate还比较陌生,我很喜欢它。不过,那样的话,我会发疯的。

    我正在为一个网站写一个小的“投票”模块。我有几门课(民意测验、民意测验和民意测验)。最主要的一个,民意调查,是导致这个问题的原因。这就是这个班级的样子:

    public class Poll
        {
            public virtual int Id { get; set; }
            public virtual Site Site { get; set; }
            public virtual string Question { get; set; }
            public virtual bool Locked { get; set; }
            public virtual bool Enabled { get; set; }
            public virtual ICollection<PollAnswer> AnswersSet { get; set; }
            public virtual ICollection<PollVote> VotesSet { get; set; }
        }
    

    这就是映射的样子:

    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                       assembly="Folke"
                       namespace="Folke.Code.Domain">
      <class name="Poll">
        <id name="Id">
          <generator class="native"></generator>
        </id>
        <property name="Site"/>
        <property name="Question"/>
        <property name="Locked"/>
        <property name="Enabled"/>
        <set name="AnswersSet" lazy="true">
          <key column="PollId"/>
          <one-to-many class="PollAnswer"/>
        </set>
        <set name="VotesSet" lazy="true">
          <key column="PollId"/>
          <one-to-many class="PollVote"/>
        </set>
      </class>
    </hibernate-mapping>
    

    这将返回一个错误:

    关联引用未映射 类:folke.code.domain.pollAnswer 描述:未处理的异常 在执行 当前Web请求。请查看 堆栈跟踪以获取有关 错误及其起源 代码。

    异常详细信息: nhibernate.mappingexception:映射异常: 关联引用未映射类: folke.code.domain.pollAnswer

    我真的很想了解这一点,更好地了解nhibernate的内部工作。我不明白它怎么看不到民意测验课。

    2 回复  |  直到 10 年前
        1
  •  10
  •   anthony    16 年前

    您定义了poll和pollAnswer之间的一对多关系。因此,在hbm.xml文件中需要一个pollAnswer部分。你还需要一张选票。

        2
  •  13
  •   HPP    12 年前

    您需要将.hbm.xml文件>属性>生成操作集设置为嵌入资源