Обратный =true в аннотациях JPA

В своем приложении я использую JPA 2.0 с Hibernate в качестве поставщика сохраняемости. У меня есть отношения один-ко-многим между двумя объектами (используя @JoinColumn и не @JoinTable). Я хотел знать, как я мог указать inverse=true (как указано в hbm.xml) в аннотациях JPA, чтобы изменить отношения владельца.

Спасибо.

2 ответа

Решение

Я нашел ответ на это. Атрибут mappedBy аннотации @OneToMany ведет себя так же, как inverse = true в файле XML.

Атрибут mappedBy указывает на то, что объект на этой стороне является обратным отношению, а владелец находится в другом объекте. Другая сущность будет иметь @JoinColumn аннотирование и @ManyToOne отношения. Следовательно, я думаю, что обратное = истина такое же, как @ManyToOne аннотаций.

Также inverse = "true" означает, что это владелец отношения, который обрабатывает отношения.

Используя mappedBy атрибут @OneToMany или @ManyToMany мы можем включить обратные ="истина" в терминах аннотации. Например, филиал и персонал связаны отношениями "один ко многим".

@Entity
@Table(name = "branch")
public class Branch implements Serializable {
    @Id
    @Column(name = "branch_no")
    @GeneratedValue(strategy = GenerationType.AUTO)
    protected int branchNo;
    @Column(name = "branch_name")
    protected String branchName;
    @OneToMany(mappedBy = "branch") // this association is mapped by branch attribute of Staff, so ignore this association
    protected Set<Staff> staffSet;
    
    // setters and getters
}
@Entity
@Table(name = "staff")
public class Staff implements Serializable {
    @Id
    @Column(name = "staff_no")
    @GeneratedValue(strategy = GenerationType.AUTO)
    protected int staffNo;
    @Column(name = "full_name")
    protected String fullName;
    @ManyToOne
    @JoinColumn(name = "branch_no", nullable = true)
    protected Branch branch;

    // setters and getters
}
Другие вопросы по тегам