У меня есть модель под названием «EventCheckin», которая имеет сопоставление ManyToOne с «Событием» и «Пользователь». PrimaryKey таблицы EventCheckin - это идентификатор пользователя и идентификатор события. Я пытаюсь представить это с помощью «EmbeddedId» в моей EventCheckin модели, но при попытке сохранить EventCheckin он пытается поставить user_id и event_id значения в таблицу дважды, которые, очевидно, не удается: классПовторяющиеся столбцы при использовании EmbeddedId с сопоставлением ManyToOne с Ebean
Caused by: org.h2.jdbc.JdbcSQLException: Duplicate column name "USER_ID"; SQL statement:
insert into eventCheckin (event_id, user_id, latitude, longitude, user_id, event
_id) values (?,?,?,?,?,?) [42121-158]
EventCheckin :
@Entity
@Table(name="eventCheckin")
public class EventCheckin extends Model
{
@EmbeddedId public CheckinId id;
@MapsId("userId")
@JoinColumn(name="user_id")
@ManyToOne public User user;
@MapsId("eventId")
@JoinColumn(name="event_id")
@ManyToOne public Event event;
.....
}
CheckinId EmbeddedId класс ::
@Embeddable
public class CheckinId implements Serializable
{
public Long eventId;
public String userId;
.....
}
И моя таблица базы данных для EventCheckin определяется следующим образом:
create table eventCheckin (
user_id varchar(255) not null,
event_id bigint not null,
latitude float,
longitude float,
constraint pk_eventCheckIn primary key (user_id,event_id),
foreign key (user_id) references user (email),
foreign key (event_id) references event (id)
);
Это учебное пособие пример '@ MapsId', написаны правильно, и должен работать как OpenEJB, так и Hibernate. – YoYo