2013-07-29 3 views
0

У меня есть два устаревших стола (Person, Car) в моем приложении. Один из них - Человек.JPA onetomany сопоставление различных значений

@Entity Person

@OneToMany Коллекция автомобилей.

Теперь стол автомобиля имеет три столбца (id, carid, personid). В идеале, carid должен быть первичным ключом (при условии, что у человека есть только одна машина). Но в моей старой таблице идентификатор является первичным ключом. Так что в таблицу были вставлены несколько записей для одного и того же personid и carid (ошибка, которая должна быть исправлена)

Но мои вопросы - это способ, которым я могу получить отличное (personid + carid) для человека, когда я вызываю person.getCars()? В принципе, я не хочу дублировать записи в моей коллекции person.getCars()

Я использую jpa2 именованные запросы. выберите p from Person p; p.getCars() размер() -. Для получения списка автомобилей (это возвращает дубликаты, а) поставщик

JPA - зимуют

ответ

0

Вы могли бы сделать коллекцию автомобилей в Set, и убедитесь, что автомобиль имеет хороший equals() и hashCode(), поэтому набор не будет содержать дубликаты автомобилей.