2

私は常に、リレーションの背後にあるロジックに基づいて@OneToOneand@ManyToOneリレーションを使用してきました。両端が1つのエンティティしかない場合は、1対1です。反対側のエンティティがこの側に複数の対応するエンティティを持っている可能性がある場合、それは多対1です。つまり、学生はちょうど1冊の学生の本を持っており、各学生の本はちょうど1人の学生に属しています(1対1)

@OneToOneただし、実際には1対1ではない注釈がコードベースにいくつか見られました。どういうわけか、これはかなり長い間機能してきましたが、hibernateはこれらの注釈を異なる方法で処理するのでしょうか?

エンティティ上にある場合、おそらく@OneToMany反対側でのマッピングは許可されませんが、それ@OneToOneとは別にですか?

4

2 に答える 2

0

I don't know how Hibernate in particular works, but EclipseLink as a JPA provider does not differentiate the two. And most applications do not either; technically a OneToOne should have a unique constraint on the foreign key, but I've never seen one used, and many applications use it and allow the target to be reused.

The JPA spec doesn't place any additional restrictions on ManyToOne behavior, so I would not rely on it in any provider. I've only ever used ManyToOne as back pointers to OneToMany relationships - if there isn't a OneToMany, I just use OneToOne.

于 2012-10-12T14:19:11.737 に答える