如果使用每个具体类的表映射继承,同时将具体类映射到任何其他类(没有union-subclass),NHibernate允许跨子类的相同PK。例如,如果您有BillingDetails和子类CreditCard和BankAccount,请求所有BillingDetails将从两个表中获取所有记录,这些记录又可以具有重复的主键,由于这些对象的有效业务标识不存在,这可能会有问题。这当然不是guids等的情况,但是对于简单身份或序列id生成器的情况呢?
简单来说,问题是,在请求像这样的多态查询时,是否真的使用了重复id键的这种情况?在内部处理实体时,这些重复的ID是否会给NHibernate带来问题?
答案 0 :(得分:3)
在映射表不共享公共密钥的旧模型时,必须使用隐式多态。
使用CreditCard和BankAccount实例共享相同的ID获取BillingDetails列表没有问题,因为NH知道它们是无关的(并且通过为每个映射运行一个查询,它们仅被视为相关的查询目的)子类)
你不应该将它用于绿地开发。