В моей базе данных есть эти две таблицы. Я заполняю пример данных, содержащих эти таблицы.
Пользователь таблицы
Здесь идентификатор столбца и век — это ПК, а столбец state_id — это FK из состояния таблицы со ссылкой на идентификатор столбца и век также является FK из состояния таблицы. Таким образом, столбец Century является одновременно FK и PK.
id
Century
имя
state_id
33
21
Джон Доу
1
Состояние таблицы
Здесь идентификатор столбца и век являются первичными ключами таблицы
id
века
label
1
21
cold
Я хочу смоделировать эти две таблицы как объекты JPA, поэтому я сделал это следующим образом:
StatePK.java:
Код: Выделить всё
@Embeddable
public class StatePK implements Serializable {
private Long id;
private Integer century;
}
Код: Выделить всё
@Entity
@Table(name = "state")
public class State {
@EmbeddedId
private StatePK id;
private String label;
}
Код: Выделить всё
@Embeddable
public class UserPK implements Serializable {
private Long id;
private Integer century;
}
Код: Выделить всё
@Entity
@Table(name = "user")
public class User implements Serializable {
@EmbeddedId
private UserPK id;
private String name;
@MapsId("century")
@ManyToOne(optional = false)
@JoinColumns(value = {
@JoinColumn(name = "century", referencedColumnName = "century"),
@JoinColumn(name = "state_id", referencedColumnName = "id")})
private State state;
}
Ошибка создания bean-компонента с именем 'entityManagerFactory', определенным в классе
path resources
[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:
[PersistenceUnit: default] Невозможно построить Hibernate SessionFactory;
вложенное исключение — java.lang.IllegalStateException: не удалось обработать очередь PostInitCallback
...\r\n - PostInitCallbackEntry -
EmbeddableMappingType(fr.xxx.User#{id})#finishInitialization
Как устранить эту ошибку?
Подробнее здесь: https://stackoverflow.com/questions/797 ... rt-as-a-fk
Мобильная версия