#java #hibernate #jpa #mapping #one-to-many
#Ява #зимовать #jpa #отображение #один ко многим
Вопрос:
public class UserOUData { @Id private Long id; private String UserEmail; @OneToMany(mappedBy="usersId") private Long orgUnitPathId; } @Entity @Table(name="Ou") public class OU { @Id private long id; private String name; private String path; @ManyToOne @JoinColumn(name="orgUnitPathId") private Collectionlt;UserOUDatagt; usersId; }
я попробовал некоторые из возможных примеров , но все еще сталкиваюсь с проблемой
Незаконная попытка сопоставить не коллекцию как @OneToMany, @ManyToMany или @CollectionOfElements: облачные коды.схема.генератор.модель.UserOUData.orgUnitPathId
private Long orgUnitPathId; @ManyToOne @JoinColumn(name="orgUnitPathId") private Collectionlt;UserOUDatagt; usersId;
может ли кто-нибудь помочь мне с этим заранее спасибо.
Ответ №1:
У вас есть одна организационная единица, в которой может быть несколько пользователей, поэтому вам нужны OneToMany
отношения в организационной единице:
@Entity @Table(name="Ou") public class OU { @Id private long id; private String name; private String path; @OneToMany(fetch = FetchType.LAZY, mappedBy = "organizationalUnit") private Collectionlt;UserOUDatagt; usersData; }
Для UserOUData
этого вам нужно ManyToOne
, так как несколько пользователей могут быть частью одного и того же OU
:
@Entity @Table(name="UserOUData") public class UserOUData { @Id private Long id; private String UserEmail; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ou_id") private OU organizationalUnit; }
Эта настройка предполагает, что вы захотите сделать соединение двунаправленным между OU
и UserOUData
.
Комментарии:
1. Спасибо за ответ @Ervin Szilagyi, но в таблице UserOuData поле представляет длинный OrgID, а не объект OU .