Hibernate/JPA отношение один ко многим, если родительская ссылка определяется как идентификатор без родительской ссылки
Стандартный способ определения отношения один-ко-многим в Hibernate/JPA заключается в наличии ссылки в дочернем объекте на его родительский объект.
@Entity
@Table(name="PARENT")
public class Parent {
// ...
@OneToMany(mappedBy="department")
private Set<Child> children;
// ...
}
@Entity
@Table(name="CHILD")
public class Child {
// ...
@ManyToOne
@JoinColumn(name="parent_id")
private Parent parent;
// ...
}
Проблема этого метода в том, что Child становится тяжеловесным классом, который сложнее отправить по проводам и т. Д.
Можно ли определить отношение один-ко-многим без родительского объекта, на который ссылается Child, и без дополнительной таблицы ссылок / соединений? В этом случае дочерний класс определяется следующим образом:
@Entity
@Table(name="CHILD")
public class Child {
// ...
@Column(name="DEPARTMENT_ID")
private Long departmentId;
// ...
}
1 ответ
Если вы используете JPA 2.0
, это возможно OneToMany
однонаправленное без родительского объекта в дочернем объекте.
Parent.java
@Entity
@Table(name="PARENT")
public class Parent {
@OneToMany
@JoinColumn(name = "PARENT_ID", referencedColumnName = "ID")
private Set<Child> children;
}
Child.java
@Entity
@Table(name="CHILD")
public class Child {
// No need to hold parent entity
//@ManyToOne
//@JoinColumn(name="parent_id")
//private Parent parent;
}