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;
}

Больше Ссылка

Другие вопросы по тегам