Здравствуйте снова:
После некоторых экспериментов и чтения мануалов пришел к следующему:
Сущности связываются однонаправленным отношением многие ко многим, где Notes содержат уникальное множество Options.
Двунаправленным отношение делать не хочу, т.к. Options нету необходимости знать о Notes.
@Entity
@Table(name="NOTES")
public class NoteEntity ...
{
@Id
@Column (name = "NOTE_ID")
private int noteId;
@ManyToMany(cascade={CascadeType.MERGE})
@JoinTable
(name="NOTE_OPTIONS",
joinColumns=@JoinColumn(name="NOTE_ID"),
inverseJoinColumns=@JoinColumn(name="OPTION_ID")
)
private Set<OptionEntity> options;
..............
}
@Entity
@Table(name = "OPTIONS")
public class OptionEntity ....
{
@Id
@Column(name = "OPTION_ID")
private int optionId;
...............
}
Данная схема позволяет создавать Options и связывать их с Notes автоматически создавая связи в NOTE_OPTIONS таблице.
На скорую руку попробовал решить изначальный вопрос и получить уникальный список всех OptionEntity на основании связей из Note_Option таблицы.
"SELECT n.options FROM " + NoteEntity.class.getName() + " n ORDER BY n.options.value"
Не получилось
org.hibernate.QueryException: illegal attempt to dereference collection [noteentity0_.NOTE_ID.options] with element property reference [value] [SELECT n.options FROM datatypes.entities.NoteEntity n ORDER BY n.options.value]
Курю мануалы дальше...
...все это временно... (с) Айэм