двунаправленный много к одному без ФК между таблицами - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь добавить отношение «многие к одному» в таблицу A, так как A необходимо будет иметь возможность получать столбцы B каждый раз, когда пользователь публикует / помещает / получает / et c в таблицу A с возможностью обновления name.

Если A создать с id = "aaa" и name = "a_name", он должен получить столбцы с такими же id и name из таблицы B. Если A обновляется с id = "aaa" и name = "b_name", это делает то же самое.

Проблема в том, что между двумя таблицами нет fk или другого отношения, даже если hibernate не заботится об ограничении.

Есть идеи, как это исправить?

Table A
id (PK) vachar
name vachar
xxx
yyy
zzz
Table B
id (PK) vachar
nm (PK) vachar
aaa
bbb
ccc

Код:

public class A implements Serializable {
  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "id", referencedColumnName = "id")
  @JoinColumn(name = "name", referencedColumnName = "nm")
  public B b;
}

работает, если я поставлю insertable = false и updatable = false, но это не соответствует требованию, поскольку таблица A должна обновлять имя.

public class B implements Serializable {
  @Id
  @Column(name = "id")
  String id;

  @Id
  @Column(name = "nm")
  String name;
}
...