JPA — встроенный идентификатор, используемый как часть его как PK, а другая часть как FK.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JPA — встроенный идентификатор, используемый как часть его как PK, а другая часть как FK.

Сообщение Anonymous »

Я запускаю приложение Spring Boot.
У меня есть эти две таблицы в моей базе данных.
Я заполняю пример данных, содержащих эти таблицы.
Пользователь таблицы
Здесь столбцы id и Century — это ПК, а столбец 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;
}
State.java:

Код: Выделить всё

@Entity
@Table(name = "state")
public class State {

@EmbeddedId
private StatePK id;

private String label;
}
UserPK.java:

Код: Выделить всё

@Embeddable
public class UserPK implements Serializable {
private Long id;
private Integer century;
}
Пользователь.java:

Код: Выделить всё

@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;
}
Но когда я запускаю приложение, у меня возникает следующая ошибка:

Код: Выделить всё

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.IllegalStateException: PostInitCallback queue could not be processed...\r\n        - PostInitCallbackEntry - EmbeddableMappingType(fr.xxx.User#{id})#finishInitialization
Может кто-нибудь помочь мне с этой проблемой, пожалуйста?

Подробнее здесь: https://stackoverflow.com/questions/797 ... rt-as-a-fk
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»