у меня есть две таблицы
Таблица пользователей
create table users (
usernumber int unsigned not null auto_increment primary key,
username varchar(32) not null,
password varchar(72) not null,
displayname varchar(32) not null,
birthday datetime not null,
email varchar(255) not null,
firstname varchar(32) not null,
lastname varchar(32) not null
);
Таблица заблокированных пользователей
create table users_locked (
idx int unsigned not null auto_increment primary key,
usernumber int unsigned not null,
start_date datetime not null,
end_date datetime not null,
memo varchar(32) default '' not null,
foreign key (usernumber) references users(usernumber) on delete cascade
);
и я использовал @CollectionTable для создания объекта, связанного с двумя таблицами
следующий...
Users.java
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
@Table(name = "users")
@Access(AccessType.FIELD)
public class Users {
@EmbeddedId
private UsersID usernumber;
@Column(name = "username", unique = true)
private String username;
@Column(name = "password")
private String password;
@Column(name = "displayname")
private String displayname;
@Embedded
private PersonalInformation personal;
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "users_locked", joinColumns = @JoinColumn(name = "usernumber"))
private List<LockPeriod> locked;
// ....
}
LockPeriod.java
@Getter
@Builder
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Embeddable
public class LockPeriod {
@Column(name = "start_date")
private Date start;
@Column(name = "end_date")
private Date end;
@Column(name = "memo")
private String memo;
//....
}
но возникает следующая ошибка, которую нельзя отобразить:
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
я сделал что-то не так? Прошу прощения за отсутствие английского.
Подчеркнуть через тип. другой причины нет.
так что попробуйте без такого багажа (т.е. просто long / int); сообщение, которое выдает выбранный вами провайдер JPA, является полной тарабарщиной (о которой следует сообщить им, чтобы исправить сообщение и указать настоящую причину)
Спасибо за совет
что такое "UsersId"? Если у вас просто "unsigned int" в качестве идентификатора класса
Users, тогда зачем использовать@EmbeddedId? !!