我有一个与NHibernate链接的MySQL数据库。
我收到StaleObjectStateException
:
消息:测试方法DALTest.UnitTest1.AddingResultAndGetAll被抛出 异常:NHibernate.StaleObjectStateException:行已更新或 被另一笔交易删除(或未保存的值映射为 错误):[Domain.Bean.Result#3]
...在rr.Save呼叫上:
DateTime date = new DateTime();
rr = new ResultRepository();
FootRace foot = new FootRace(2,"une courseeee", "vraiment une chouette course", date, 5, false);
Participant part = new Participant(2,"Boveeé", "Joseeé", 123, "M", date, 5);
rr.Save(new Result(3,foot,part , new TimeSpan(2500),5));
我的接口实现是
public void Save(Result result) {
var e =Session.GetSessionImplementation().PersistenceContext.EntityEntries;
Session.SaveOrUpdate(result);
Session.Flush();
}
进行了一些研究后,看来这是一个线程问题,但我找不到解决方案。顺便说一下,在我调用此测试时就重置了数据库,因此内部绝对没有任何东西。
这是XML映射文件:
<class name="Result" table="result">
<id name="Id" column="idResult" type="int">
<generator class="native"></generator>
</id>
<many-to-one name="FootRace" class="FootRace" column="idFootRace" cascade="save-update"/>
<many-to-one name="Participant" class ="Participant" column ="idParticipant" cascade="save-update"/>
<property name="RaceTime" column="raceTime" not-null="false"/>
<property name="Rank" column="rank"/>
</class>