Hibernate @OneToOne mapping with a @Where clause

nuaavee picture nuaavee · Dec 8, 2010 · Viewed 7k times · Source

Will this work -

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

This is what I am trying to do - get the record from table note whose type_id is the id of the current object and type_name is OBJECTIVE.

I can't get the above mapping to work. What am I doing wrong here?

Answer

Affe picture Affe · Dec 8, 2010

This just plain does not work, sorry :( You will need to do it as one to many and live with getting a collection with a single element.

If you really want it to work this way, you can trick hibernate by storing both the foreign key ID and the type_name in a join table and telling it that both columns make up the foreign key.