Предположим, у меня есть сущность:
@Entity
public class AnEntity implements Serializable{
@ElementCollection
private List<String> strings = new Vector<String>();
// other stuff
}
Я использую EclipseLink (JPA 2.0).
Строки в этом списке могут иметь одинаковые значения во многих объектах AnEntity.
То есть многие объекты AnEntity могут ссылаться на одни и те же строки.
Проблема в том, что отображение по умолчанию, которое обеспечивает @ElementCollection, оставляет много дубликатов в таблице строк (ANENTITY_STRINGS). Как я могу отобразить это так, чтобы при сохранении списка строк он сохранял значения однозначно, чтобы у меня не было массивной таблицы дублирующихся строк?
Я должен добавить, что я пытался использовать классы-заполнители, в которых есть один член - строка. К сожалению, при таком способе данные в связанной таблице остаются нечитаемыми, и я уверен, что они сохраняются в виде больших двоичных объектов. Так, например, я сделал что-то подобное вместо использования List:
@ElementCollection
@ManyToMany
private List<StringWrapperClass> strings = new Vector<StringWrapperClass>();
И тогда моя сущность выглядит примерно так:
@Entity
public class StringWrapperClass implements Serializable {
private String string;
// other stuff, getters, setters, id, etc
}
Но, как я уже сказал, это помещает только байты в ANENTITY_STRINGS. Я не могу себе представить, что это «правильный» способ сделать это.