@CollectionTable не подключается

у меня есть две таблицы

Таблица пользователей

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

я сделал что-то не так? Прошу прощения за отсутствие английского.

что такое "UsersId"? Если у вас просто "unsigned int" в качестве идентификатора класса Users, тогда зачем использовать @EmbeddedId? !!

user8558216 07.04.2018 19:54

Подчеркнуть через тип. другой причины нет.

cube8540 08.04.2018 10:30

так что попробуйте без такого багажа (т.е. просто long / int); сообщение, которое выдает выбранный вами провайдер JPA, является полной тарабарщиной (о которой следует сообщить им, чтобы исправить сообщение и указать настоящую причину)

user8558216 08.04.2018 19:06

Спасибо за совет

cube8540 09.04.2018 14:47
1
4
45
0

Другие вопросы по теме