У меня проблема с отображением спящего режима. У меня есть следующие две таблицы БД (не допускается изменение БД):Hibernate @EmbeddedId + join
LOCATIONS {
ID, -- PK
NAME
}
LOCATION_GROUPS {
LOC_ID, -- PK, and FK to LOCATIONS.ID
GROUP_NAME -- PK
}
Я пытался создать объекты для этих таблиц БД, но я не знаю, как отобразить связь между таблицами , Вот моя попытка (но это не так):
@Embeddable
public class LocationGroupId implements Serializable {
private static final long serialVersionUID = -6437671620548733621L;
private Location loc;
private String group;
@Column(name = "LOC_ID")
public Location getLoc() {
return loc;
}
@Column(name = "GROUP_NAME")
public String getGroup() {
return group;
}
// ...
}
@Entity
@Table(name = "LOCATION_GROUPS")
public class LocationGroup {
private LocationGroupId id;
@EmbeddedId
public LocationGroupId getId() {
return id;
}
// ...
}
@Entity
@Table(name = "LOCATIONS")
public class Location {
private Long id;
private String name;
private List<LocationGroup> groups;
@Column(name = "NAME")
public String getName() {
return this.name;
}
@OneToMany(mappedBy = "id.loc")
public List<LocationGroup> getGroups() {
return this.groups;
}
@Id
@Column(name = "ID")
@SequenceGenerator(name = "LocationIdGen", sequenceName = "LOCATION_SQ")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "LocationIdGen")
public Long getId() {
return this.id;
}
// ...
}
Трудность состоит в том, что я хочу, чтобы установить соединение OneToMany между колонной и часть столбца embeddedId. Любые идеи по этой проблеме? (Я использую спящий режим 4.0.1)
JB Nizet, спасибо, что ответили. Прежде чем я прочитал ваш ответ, я нашел эту страницу: http://beavercreekconsulting.com/blog/2008/10/hibernate-annotations-for-a-one-to-many-mapping/ и использовал это. Но я ценю ваш ответ и принимаю его как решение :) – Imreking