2013-05-03 4 views
0

JPA/весна данныхManyToOne отношение подключения через embbeded fielld вопрос

я есть класс растений, который embbededId PlantID и у меня есть класс Image, который, как поле Embbeded PlantID

это означает, что каждое изображение подключить к растению , так что соединение один ко многим (один завод много изображений)

я пытался что-то вроде этого (который не работает)

@entity 
public class Plant{ 
    @EmbbededId 
    PlantId id 
} 

@entity 
public class Image{ 
    @Id 
    Long id 

    @Embbeded 
    PlantId plantId 

    @ManyToOne 
    Plant plant 

} 

как я могу исправить код, чтобы получить результат я ищу? благодаря

Дуб

EDIT: Как я могу отобразить столбцы для ManyToOne связи, если у меня есть композитный идентификатор для завода?

+1

Я не понимаю, почему вы ставите PlantID в изображения, когда вы можете просто позвонить image.getPlant() GetId(). Вам нужен только образ, чтобы иметь свой собственный идентификатор и отношение к растению. Если идентификатор завода является составным, вам нужно сопоставить столбцы соединения, чтобы JPA знал, какие поля использовать в таблице изображений в качестве внешних ключей. – Chris

+0

эй! idont должны помещать plantId в изображение. plantId является составной из 4 длин. Я просто не знаю, как сопоставить столбцы plantId, поэтому JPA будет знать, как подключить отношение @ManyToOne. – oak

+0

Сделайте свою жизнь проще и быстрее: используйте однострочные автогенерированные идентификаторы. –

ответ

1

Все, что вам не хватает, когда вы удаляете embedIable plantId, является определением столбца объединения на сопоставлении ManyToOne, чтобы JPA знал, какие внешние ключи использовать, чтобы соответствовать полям id в Plant. Что-то вроде:.

@ManyToOne 
@JoinColumns({ 
     @JoinColumn(name="FK_1", referencedColumnName="PK1"), 
     @JoinColumn(name="FK_2", referencedColumnName="PK2"), 
     @JoinColumn(name="FK_3", referencedColumnName="PK3") 
     }) 
Plant plant;