首页 新闻 会员 周边

NHibernate通过HQL删除基类的对象结果NHibernate却去删除的是派生类的对象

0
悬赏园豆:100 [待解决问题]

1. 定义了类 CnstBase,这个类映射到数据库表CnstBase表。

2. 定义了类V_CnstBase,映射到数据库视图V_CnstBase。因为视图V_CnstBase中的字段包括了所有CnstBase的字段,所以定义V_CnstBase类时,V_CnstPhase继承了CnstBase类。

3. 使用HQL来批量删除CnstBase表中的数据:

    _session.Delete("From CnstBase p where p.ProjectId = 11");

4. 执行时抛出了异常,显示NHibernate删除的是V_CnstPhase的记录,由于V_CnstPhase是视图,删除失败。

问题是,NHibernate在HQL中为什么不是将CnstBase类映射到CnstBase表,而是V_CnstBase?Nhibernate是怎么处理类间的继承和派生?

另外,如果将V_CnstBase.hbm.xml在hibernate.xml中删除的话,就不会出现删除异常。

Joybean的主页 Joybean | 初学一级 | 园豆:100
提问于:2011-01-22 17:28
< >
分享
所有回答(1)
0

映射到表需要xml配置的吧

 

另外我记得sql server的视图是支持删改操作吧

Richwong | 园豆:120 (初学一级) | 2011-01-22 21:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册