Согласно книге Pro JPA 2 основное различие между однонаправленным @ManyToOne и @OneToOne является то, что в @OneToOne:JPA однонаправленный @OneToOne vs @ManyToOne с Hibernate - без разницы?
только один экземпляр исходного объекта может ссылаться на тот же экземпляр целевого объекта. Иными словами, экземпляр целевого объекта равен , который не используется совместно с экземплярами исходного объекта. В базе данных это эквивалентно наличию ограничения уникальности для столбца внешнего внешнего ключа (то есть столбца внешнего ключа в таблице исходных сущностей).
Дело в том, что когда я создаю такое сопоставление на сущности и позволяю Hibernate создавать схему, нет никакого уникального ограничения, созданного вообще. Зачем? Из-за этого для меня нет никакой разницы между @ManyToOne и @OneToOne, если я должен явно определять уникальное ограничение для отображения. Я могу сделать это для них обоих, и это не имеет значения. Это правильное поведение?
«Не делать этого было бы только путать разработчиков приложения» - это лучшая причина, о которой я могу думать! Можете ли вы указать версию Hibernate, которая создает ограничение с помощью @OneToOne? – user1071076
Все, что я недавно использовал, IIRC. 3.6 +. Это также может зависеть от вашего диалекта базы данных. –
hmm, Oracle XE, это могло быть так. Будет проверяться с помощью MySQL ... – user1071076