Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NHibernate+;多对多+;袋子+;映射表_Nhibernate_Many To Many_Bag - Fatal编程技术网

NHibernate+;多对多+;袋子+;映射表

NHibernate+;多对多+;袋子+;映射表,nhibernate,many-to-many,bag,Nhibernate,Many To Many,Bag,我有以下三节课 BusinessStream Scheme Bus_Stream_Scheme_Map 当我尝试执行transaction.Commit()方法时,在session.SaveOrUpdate()之后,对于BusinessStream,我得到以下错误: 无法将NULL插入(“DBO”、“总线流”方案“映射”、“总线流”方案“映射”ID”) HBM文件 业务流程 <class name="BusinessStream" table="BUS_STREAM"> <i

我有以下三节课

BusinessStream
Scheme
Bus_Stream_Scheme_Map
当我尝试执行
transaction.Commit()
方法时,在
session.SaveOrUpdate()之后,对于
BusinessStream
,我得到以下错误:

无法将NULL插入(“DBO”、“总线流”方案“映射”、“总线流”方案“映射”ID”)

HBM文件

业务流程

<class name="BusinessStream" table="BUS_STREAM">
<id name="Id" column="BS_ID" type="Int32" >
  <generator class="sequence">
    <param name="sequence">BUS_STREAM_SEQ</param>
  </generator>
</id>
<property name="Name" column="Name" type="String"/>
<property name="Description" column="Description" type="String"/>
<bag name="Schemes" table="BUS_STREAM_SCHEME_MAP" lazy="false">
  <key column="BUS_STREAM_ID"></key>
  <many-to-many class="Scheme" column="SCHEME_ID"></many-to-many>
</bag>

</class>

总线流
计划

<class name="Scheme" table="SCHEME_DEF">
    <id name="Id">
     <column name="SCHEME_ID"/>
     <generator class="native">
          <param name="sequence">SCHEME_DEF_SEQ</param>
     </generator>
</id>
    <property name="Description" column="SCHEME_DESC" type="String"/>
</class>

方案定义如下
业务流程图

<class name="BusinessStreamSchemeMapping" table="BUS_STREAM_SCHEME_MAP">
<id name="Id">
  <column name="BUS_STREAM_SCHEME_MAP_ID"/>
  <generator class="native">
    <param name="sequence">BUS_STREAM_SCHEME_MAP_SEQ</param>
  </generator>
</id>
</class>

巴士(车流)方案(地图)

我做错了什么?

这只是一个猜测,但如果您将
总线\u流\u方案\u映射\u ID
设置为自动递增字段,它会起作用吗?

根据设计,我们使用Oracle的序列对象为主键字段生成ID。所以,如果我直接对
BusinessStreamSchemeMapping
对象执行SaveOrUpdate(),那么它就可以工作了。它在
BUS\u STREAM\u SCHEME\u MAP
表中创建一个新行。但是,当这个类在
中使用时,它却无法做到这一点。自从我使用NHibernate以来,已经有一段时间了,但我记得多对多关系可以在没有关联表的映射项的情况下进行映射。您的业务逻辑和/或其他用例是否需要映射
BusinessStreamSchemeMapping
?我们正在讨论同样的问题,看看是否可以避免映射类/表。谢谢你的评论。