Обратный =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
}