Отображение Hibernate @OneToOne с предложением @Where - PullRequest
7 голосов
/ 08 декабря 2010

Будет ли это работать -

@OneToOne()
@JoinColumn(name = "id", referencedColumnName = "type_id")
@Where(clause = "type_name = OBJECTIVE")
public NoteEntity getObjectiveNote() {
  return objectiveNote;
}

Это то, что я пытаюсь сделать - получить запись из таблицы note, type_id которой является id текущего объекта, а type_name - OBJECTIVE.

Я не могу заставить работать приведенное выше отображение. Что я тут не так делаю?

Ответы [ 2 ]

5 голосов
/ 08 декабря 2010

Это просто не работает, извините :( Вам нужно будет сделать это как один ко многим и жить с получением коллекции с одним элементом.

Если вы действительно хотите, чтобы это работало таким образом,вы можете обмануть спящий режим, сохранив идентификатор внешнего ключа и type_name в таблице соединений и сообщив, что оба столбца составляют внешний ключ.

1 голос
/ 27 октября 2017

На самом деле вы можете достичь этого, указав @OneToOne без @Where, но указав @Where в классе ссылочной сущности. Я проверял это на Hibernate 4.3.11.

Это работает, если вам нет дела до объектов, которые не соответствуют вашему @Where.

Если вы занимаетесь заботой о других сущностях, вы, вероятно, можете создать сущность подкласса, поместить в нее @Where и присоединиться к этому подклассу. Но я не проверял этот сценарий.

...