2016-08-23 4 views
0

Я хотел бы использовать ORM Hibernate. И столкнулся с проблемой ниже. Есть несколько таблиц, которые имеют перевод на разных языках. например это выглядит следующим образом: enter image description hereКак создать правильное сопоставление объектов?

В базе данных я могу использовать присоединиться и получить все необходимые данные например: SELECT * FROM car c JOIN translation t on c.description = t.description WHERE t.type = 'CAR'

Как вы можете видеть таблицу «перевод» имеет столбец «тип», который использует для фильтрации по типу ,

Итак, главный вопрос, как создать правильные объекты и сопоставление?

+0

Добавить информацию о том, чего вы хотите, и почему здесь нужен город –

+0

есть список городов и список автомобилей. Каждый из них имеет перевод описания на разных языках в переводе таблицы. Мне нужно знать hotw для создания правильного сопоставления объектов и объектов POJO. –

ответ

0

Автомобиль имеет переводы OneToMany. У Similary в городе есть перевод OneToMany. Но каждый перевод имеет от нуля до одного автомобиля или от нуля до одного города.

Перевод сделан либо для автомобиля, либо из города, потому что его описание говорит о городе или автомобиле. Это достигается с помощью обозначения ManyToOne. В hibernate нет аннотации, чтобы явно указать диапазон от Zero. Следующим является только получение справедливой идеи сопоставлений. Я не предполагаю никаких отношений между городом и автомобилем, хотя я могу думать, что в городе есть автомобили OneToMany.

@Entity 
class Car 
{ 
private int Id; 
private String name; 
//.......... declare all variables that you need 
@OneToMany(mappedBy = "car") 
private List<Translation> 
//getters and setters 
} 

@Entity 
class City 
{ 
private int Id; 
private String name; 
//.......... declare all variables that you need 
@OneToMany(mappedBy = "city") 
private List<Translation> 
//getters and setters 
} 

@Entity 
class Translation 
{ 
private int Id; 
private String language; 
//.......... declare all variables that you need 
@ManyToOne 
private Car; 
@ManyToOne 
private City; 
//getters and setters 
} 
+0

Ваш пример не комментирован, вы должны использовать аннотацию @JoinTable для сопоставления отношений и '@Table' для имени заданной таблицы. Также нет никакого тривиального отображения по id, поэтому пример ниже не подходит для моей задачи. В моем случае это немного похоже на наследование спящего режима, а именно DisccriminatorColumn и DisccriminatorValue. Но я не могу использовать наследования, потому что owerriding id не допускается. С кодовой стороны это простая ассоциация, но я не знаю, как ее сопоставить. –

+0

Я просто дал короткий код, который может быть импровизирован далее на основе вашего объяснения. –

Смежные вопросы