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

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

Сообщение Anonymous »

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

Ошибка создания 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
Ответить

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

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

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

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

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