It may work but the concept is not the same. The not-nullable FK mean that NH have to track the unidirectional one-to-many (in the domain model) because it have to work as a mandatory bidirectional one-to-many<->many-to-one in the DB. With a nullable FK the relation is just an option and NH does not have to track the backref to the parent. a case: we have a video as standalone entity or a video associated to a magazine. in this case the magazine may have a video associted in a collection. the association de-association is performed with an UPDATE because you can INSERT the video before INSERT the magazine and then you can perform the association beteween the two entities.
if we have a reletion as "the video can exists just when associated in a magazine" the unidirectional association represents a real parent-child (the child can't exists without the parent) and the association/de-association is performed via INSERT-REMOVE, as in a bidirectional relation, but with a unidirectional relation in the domain model. btw the matter is always the same: you can change the behavior passing all tests and then wait for bugs ;) just take care to do it inside an alpha release (in this case) -- Fabio Maulo El 06/08/2012, a las 18:00, "Alexander I. Zaytsev" <[email protected]> escribió: > Thanks, but I understand what this is and how it works. I do not > understand why this is applied only to not-null FK, as it works with > nullable FK too. > > If we will remove this check we will get consistent behavior for null > FK and for not-null FK > > 2012/8/7 Fabio Maulo <[email protected]>: >> The unidirectional one-to-many is a base feature of NH since 1.2 or >> before... >> >> What you are watching is a special case, exactly to manage and optimize the >> case when the FK is not-nullable. >> Instead INSERT+UPDATE, as managed for no-mandatory unidirectional >> one-to-many (where the "item" side may have its own lifecycle), the case for >> mandatory unidirectional one-to-many (FK not-nullable) works with INSERT >> directly using a "fake" property for the backref to the parent. >> >> On Mon, Aug 6, 2012 at 11:10 AM, Alexander I. Zaytsev >> <[email protected]> wrote: >>> >>> Hi, all >>> >>> As you may know NH since 3.2 supports uni-directional one-to-many >>> associations. >>> >>> This was done by these commits >>> >>> >>> https://github.com/nhibernate/nhibernate-core/commit/cb60f2169e7504ff83e601c555e42171f28ef9ff >>> >>> >>> https://github.com/nhibernate/nhibernate-core/commit/d6cc06bbfee56fc3ae224fdfdc862df4fdff0442 >>> >>> I wonder why this fix is applied only to keys with not-null="true" >>> attribute? I've checked and it seems that all works perfectly without >>> checking that key is not nullable. >>> >>> As I understand the fix was ported from Hibernate, because there I've >>> found exactly the same code. >> >> >> >> >> -- >> Fabio Maulo >>
