В моей структуре каждая «Задача» имеет отношение OneToOne с одной «Проблемой», а каждая «Задача» имеет OneToOne с «Решением». «Решение» имеет список «Предметов».
Я не могу найти способ заставить это работать. когда начинается спящий режим, у меня возникает это исключение, и таблица «Элемент» не создается.
org.hibernate.tool.schema.spi.CommandAcceptanceException: Ошибка при выполнении DDL «изменить элемент таблицы, добавить ограничение
в org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept (GenerationTargetToDatabase.java:67) ~ [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString (AbstractSchemaMigrator.java:559) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings (AbstractSchemaMigrator.java:504) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applyForeignKeys (AbstractSchemaMigrator.java:433) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration (AbstractSchemaMigrator.java:249) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration (AbstractSchemaMigrator.java:114) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction (SchemaManagementToolCoordinator.java:183) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process (SchemaManagementToolCoordinator.java:72) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.internal.SessionFactoryImpl. (SessionFactoryImpl.java:310) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.boot.internal.SessionFactoryBuilderImpl.build (SessionFactoryBuilderImpl.java:467) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
в org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build (EntityManagerFactoryBuilderImpl.java:939) [hibernate-core-5.3.7.Final.jar: 5.3.7.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory (SpringHibernateJpaPersistenceProvider.java:57) [spring-orm-5.1.3.RELEASE.jar: 5.1.3.RELEASE] * 100
Код приведен ниже (исключая геттеры и сеттеры).
Задача
@Entity
@JsonIgnoreProperties(ignoreUnknown = true,
value = {"id"})
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@JsonProperty("task")
private String taskName;
private String status;
private Timestamps timestamps;
@OneToMany(mappedBy = "task", cascade = {CascadeType.ALL})
private List<Problem> problem;
public Task(){
}
}
Задача
@Entity
public class Problem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private Integer capacity;
@ElementCollection
@CollectionTable(name="weights",
joinColumns=@JoinColumn(name="problem_id"))
@Column(name="weights")
private List<Integer> weights;
@ElementCollection
@CollectionTable(name="_values",
joinColumns=@JoinColumn(name="problem_id"))
@Column(name="_values")
private List<Integer> values;
@ManyToOne(fetch=FetchType.LAZY, cascade = {CascadeType.ALL})
@JsonIgnore
private Task task;
@OneToOne
private Solution solution;
}
Решение:
@Entity
public class Solution {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne(fetch=FetchType.LAZY)
@JsonIgnore
private Task task;
@OneToOne(cascade = {CascadeType.ALL})
private Problem problem;
@OneToMany
private List<Item> items;
}
Пункт:
@Entity
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private Integer values;
private Integer weight;
@ManyToOne(fetch=FetchType.LAZY, cascade = {CascadeType.ALL})
@JsonIgnore
private Solution solution;
* *} Тысяча двадцать-один