Create Table A (
ID varchar(8),
Primary Key(ID)
);
Create Table B (
ID varchar(8),
A_ID varchar(8),
Primary Key(ID),
Foreign Key(A_ID) References A(ID)
);
Учитывая, что я создал две таблицы, используя операторы SQL выше, и я хочу, чтобы создать Entity
классы для них, для класса B
, у меня есть эти атрибуты члена:Java JPA @OneToMany необходимо ответить взаимностью @ManyToOne?
@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@JoinColumn(name = "A_ID", referencedColumnName = "ID", nullable = false)
@ManyToOne(optional = false)
private A AId;
В классе A
, нужно ли мне отвечать взаимностью на отношения «один-на-один»?
@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "AId")
private List<B> BList; //<-- Is this attribute necessary?
ли это необходимо или хорошая идея, чтобы иметь ответную @OneToMany
для @ManyToOne
? Если я сделаю проектное решение оставить теперь аннотированный атрибут @OneToMany
, вернется ли он, чтобы снова укусить меня?
+1 и проверьте @Pascal Thivent: для указания, я могу добавить его позже, если мне это нужно: это было моей главной заботой. – bguiz
Обычно я стараюсь избегать однонаправленных сопоставлений как можно больше. Просто потому, что что-то в дате основывается с отдельной таблицей соединений (по какой-либо причине), не означает, что моя объектная модель должна делать то же самое. В приведенном выше примере OneToOne-Mapping будет достаточно для однонаправленного решения (конечно, это должно соответствовать домену). – lostiniceland