У меня возникла проблема: возникла ошибка. Ошибка при создании компонента с именем «entityManagerFactory».
ERROR LocalContainerEntityManagerFactoryBean.buildNativeEntityManagerFactory:426 - Failed to initialize JPA EntityManagerFactory: Column mappings for property 'null' mix nullable with 'not null'
2024-12-23 07:33:37.207 ERROR SpringApplication.reportFailure:824 - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Column mappings for property 'null' mix nullable with 'not null'
Я пытался проверить базу данных и модель, которая имеет ненулевое значение
Вот мой сценарий для SQL
-- Create TEMP_PROJECT_WBS_SESSION table
CREATE TABLE IF NOT EXISTS temp_project_wbs_session (
session_id serial4 PRIMARY KEY,
project_wbs_id INT NOT NULL,
user_id BIGINT NOT NULL,
status VARCHAR(255),
FOREIGN KEY (project_wbs_id) REFERENCES project_wbs(id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS table
CREATE TABLE IF NOT EXISTS temp_project_wbs (
id BIGINT NOT NULL,
session_id INT NOT NULL,
project_id INT NOT NULL,
status VARCHAR(255),
PRIMARY KEY (id, session_id),
FOREIGN KEY (project_id) REFERENCES project(id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TABS table
CREATE TABLE IF NOT EXISTS temp_project_wbs_tabs (
id BIGINT NOT NULL,
session_id INT NOT NULL,
temp_project_wbs_id INT NOT NULL,
temp_parent_tabs_id INT,
tab_name VARCHAR(255) NOT NULL,
order_no INT NOT NULL,
level INT NOT NULL,
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_id, session_id) REFERENCES temp_project_wbs(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (temp_parent_tabs_id, session_id) REFERENCES temp_project_wbs_tabs(id, session_id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TASK table
CREATE TABLE IF NOT EXISTS temp_project_wbs_task (
id BIGINT NOT NULL,
session_id INT NOT NULL,
project_id INT NOT NULL,
temp_project_wbs_tabs_id INT NOT NULL,
temp_project_wbs_parent_task_id INT,
name VARCHAR(255) NOT NULL,
period INT,
order_no INT,
start_date DATE,
end_date DATE,
description TEXT,
type VARCHAR(50),
level INT,
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_tabs_id, session_id) REFERENCES temp_project_wbs_tabs(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (temp_project_wbs_parent_task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES project(id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TASK_LINK table
CREATE TABLE IF NOT EXISTS temp_project_wbs_task_link (
id BIGINT NOT NULL,
session_id INT NOT NULL,
temp_project_wbs_id INT NOT NULL,
temp_project_wbs_task_id INT NOT NULL,
task_id INT NOT NULL,
type VARCHAR(50),
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_id, session_id) REFERENCES temp_project_wbs(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (temp_project_wbs_task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TASK_OUTPUT table
CREATE TABLE IF NOT EXISTS temp_project_wbs_task_output (
id BIGINT NOT NULL,
session_id INT NOT NULL,
temp_project_wbs_id INT NOT NULL,
temp_project_wbs_task_id INT NOT NULL,
standard_output_id INT,
type VARCHAR(50),
product_name VARCHAR(255),
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_id, session_id) REFERENCES temp_project_wbs(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (temp_project_wbs_task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TASK_PIC table
CREATE TABLE IF NOT EXISTS temp_project_wbs_task_pic (
id BIGINT NOT NULL,
session_id INT NOT NULL,
temp_project_wbs_task_id INT NOT NULL,
user_id INT,
rate INT,
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE
);
Вот встроенный идентификатор моей модели
@Setter
@Getter
@Embeddable
public class TempPrimaryKey {
@Column(name = "id", nullable = false)
private BigInteger id; //mainId
@Column(name = "session_id", nullable = false)
private Integer sessionId;
// Default constructor
public TempPrimaryKey() {}
// Constructor
public TempPrimaryKey(BigInteger id, Integer sessionId) {
this.id = id;
this.sessionId = sessionId;
}
// Override equals() and hashCode()
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TempPrimaryKey that = (TempPrimaryKey) o;
return Objects.equals(id, that.id) && Objects.equals(sessionId, that.sessionId);
}
@Override
public int hashCode() {
return Objects.hash(id, sessionId);
}
}
Вот это для WbsSession
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_session")
public class TempProjectWbsSession extends BaseEntity {
public static final String NEW_STATUS = "NEW";
public static final String EDIT_STATUS = "EDIT";
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "session_id", nullable = false)
private Integer id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "project_wbs_id", nullable = false)
private ProjectWbs projectWbs;
@JoinColumn(name = "user_id", nullable = false)
private Integer userId;
@Size(max = 255)
@Column(name = "status")
private String status;
}
Вот это для Wbs
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs")
public class TempProjectWbs extends BaseEntity {
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "project_id", nullable = false)
private Project project;
@Size(max = 255)
@Column(name = "status")
private String status;
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbs")
@OrderBy("level ASC, orderNo ASC")
private List tempProjectWbsTabs = new ArrayList();
}
Вот это для WbsTab
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_tabs")
public class TempProjectWbsTab extends BaseEntity {
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbs tempProjectWbs;
@Column(name = "tab_name", nullable = false)
private String name;
@Column(name = "order_no", nullable = false)
private Integer orderNo;
@Column(name = "level", nullable = false)
private Integer level;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_parent_tabs_id", referencedColumnName = "id"),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTab tempParentTabs;
@OneToMany(mappedBy = "tempParentTabs")
@OrderBy("orderNo ASC")
private List childs = new ArrayList();
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsTab")
@OrderBy("level ASC, orderNo ASC")
private List tasks = new ArrayList();
}
Вот это для задачи
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_task")
публичный класс TempProjectWbsTask расширяет BaseEntity {
публичная статическая финальная строка TYPE_TASK = "TASK";
публичная статическая финальная строка TYPE_TAB = "TAB";
публичная статическая финальная строка TYPE_ACTIVITY = "ACTIVITY";
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "project_id", nullable = false)
private Project project;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_tabs_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTab tempProjectWbsTab;
@Size(max = 255)
@NotNull
@Column(name = "name", nullable = false)
private String name;
@Column(name = "period")
private Integer period = 0;
@Column(name = "order_no")
private Integer orderNo;
@Column(name = "start_date")
private LocalDate startDate;
@Column(name = "end_date")
private LocalDate endDate;
@Column(name = "description", length = Integer.MAX_VALUE)
private String description;
@Size(max = 50)
@Column(name = "type", length = 50)
private String type;
@Column(name = "level")
private Integer level;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_parent_task_id", referencedColumnName = "id"),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTask tempProjectWbsParentTask;
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsParentTask")
@OrderBy("orderNo ASC")
private List childs = new ArrayList();
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsTask", fetch = FetchType.LAZY)
private List tempProjectWbsTaskLinker = new ArrayList();
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsTask", fetch = FetchType.LAZY)
private List tempProjectWbsTaskOutputs = new ArrayList();
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsTask", fetch = FetchType.LAZY)
private List tempProjectWbsPics = new ArrayList();
public LocalDate getStartDate() {
if (TYPE_TASK.equals(this.type))
return this.startDate;
return this.childs.stream()
.map(TempProjectWbsTask::getStartDate)
.filter(Objects::nonNull)
.min(LocalDate::compareTo)
.orElse(this.startDate);
}
public LocalDate getEndDate() {
if (TYPE_TASK.equals(this.type))
return this.endDate;
return this.childs.stream()
.map(TempProjectWbsTask::getEndDate)
.filter(Objects::nonNull)
.max(LocalDate::compareTo)
.orElse(this.endDate);
}
public String getTaskCode() {
if (this.tempProjectWbsParentTask == null) {
return String.valueOf(this.orderNo);
} else {
return this.tempProjectWbsParentTask.getTaskCode() + "." + this.orderNo;
}
}
}
Вот это для TaskLink
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_task_link")
public class TempProjectWbsTaskLink extends BaseEntity {
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbs tempProjectWbs;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_task_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTask tempProjectWbsTask; //projectWbsTask -> linkedTo task (FS, FF, SS, SF)
@ManyToOne
@JoinColumns({
@JoinColumn(name = "task_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false),
})
private TempProjectWbsTask task;
@Size(max = 50)
@Column(name = "type", length = 50)
private String type;
}
Вот это для TaskOutput
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_task_output")
public class TempProjectWbsTaskOutput extends BaseEntity {
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", insertable = false, updatable = false)
})
private TempProjectWbs tempProjectWbs;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_task_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTask tempProjectWbsTask;
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "standard_output_id", nullable = false)
private StandardOutputView standardOutput;
@Size(max = 50)
@Column(name = "type", length = 50)
private String type;
@Size(max = 255)
@Column(name = "product_name")
private String outputName;
}
Вот это для TaskPic
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_task_pic")
public class TempProjectWbsTaskPic extends BaseEntity {
public static final String TYPE_PM = "TYPEPM";
public static final String TYPE_INDIVIDUAL_ASSIGNEE = "TYPEINDIVIDUAL";
public static final String TYPE_BY_ROLE = "TYPEROLE";
@EmbeddedId
private TempPrimaryKey id;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_task_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTask tempProjectWbsTask;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
private UserView user;
@Column(name = "rate")
private Integer rate;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... embeddedid
Ошибка создания bean-компонента с именем «entityManagerFactory» с EmbeddedId ⇐ JAVA
Программисты JAVA общаются здесь
1734930695
Anonymous
У меня возникла проблема: возникла ошибка. Ошибка при создании компонента с именем «entityManagerFactory».
ERROR LocalContainerEntityManagerFactoryBean.buildNativeEntityManagerFactory:426 - Failed to initialize JPA EntityManagerFactory: Column mappings for property 'null' mix nullable with 'not null'
2024-12-23 07:33:37.207 ERROR SpringApplication.reportFailure:824 - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Column mappings for property 'null' mix nullable with 'not null'
Я пытался проверить базу данных и модель, которая имеет ненулевое значение
Вот мой сценарий для SQL
-- Create TEMP_PROJECT_WBS_SESSION table
CREATE TABLE IF NOT EXISTS temp_project_wbs_session (
session_id serial4 PRIMARY KEY,
project_wbs_id INT NOT NULL,
user_id BIGINT NOT NULL,
status VARCHAR(255),
FOREIGN KEY (project_wbs_id) REFERENCES project_wbs(id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS table
CREATE TABLE IF NOT EXISTS temp_project_wbs (
id BIGINT NOT NULL,
session_id INT NOT NULL,
project_id INT NOT NULL,
status VARCHAR(255),
PRIMARY KEY (id, session_id),
FOREIGN KEY (project_id) REFERENCES project(id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TABS table
CREATE TABLE IF NOT EXISTS temp_project_wbs_tabs (
id BIGINT NOT NULL,
session_id INT NOT NULL,
temp_project_wbs_id INT NOT NULL,
temp_parent_tabs_id INT,
tab_name VARCHAR(255) NOT NULL,
order_no INT NOT NULL,
level INT NOT NULL,
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_id, session_id) REFERENCES temp_project_wbs(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (temp_parent_tabs_id, session_id) REFERENCES temp_project_wbs_tabs(id, session_id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TASK table
CREATE TABLE IF NOT EXISTS temp_project_wbs_task (
id BIGINT NOT NULL,
session_id INT NOT NULL,
project_id INT NOT NULL,
temp_project_wbs_tabs_id INT NOT NULL,
temp_project_wbs_parent_task_id INT,
name VARCHAR(255) NOT NULL,
period INT,
order_no INT,
start_date DATE,
end_date DATE,
description TEXT,
type VARCHAR(50),
level INT,
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_tabs_id, session_id) REFERENCES temp_project_wbs_tabs(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (temp_project_wbs_parent_task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES project(id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TASK_LINK table
CREATE TABLE IF NOT EXISTS temp_project_wbs_task_link (
id BIGINT NOT NULL,
session_id INT NOT NULL,
temp_project_wbs_id INT NOT NULL,
temp_project_wbs_task_id INT NOT NULL,
task_id INT NOT NULL,
type VARCHAR(50),
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_id, session_id) REFERENCES temp_project_wbs(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (temp_project_wbs_task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TASK_OUTPUT table
CREATE TABLE IF NOT EXISTS temp_project_wbs_task_output (
id BIGINT NOT NULL,
session_id INT NOT NULL,
temp_project_wbs_id INT NOT NULL,
temp_project_wbs_task_id INT NOT NULL,
standard_output_id INT,
type VARCHAR(50),
product_name VARCHAR(255),
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_id, session_id) REFERENCES temp_project_wbs(id, session_id) ON DELETE CASCADE,
FOREIGN KEY (temp_project_wbs_task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE
);
-- Create TEMP_PROJECT_WBS_TASK_PIC table
CREATE TABLE IF NOT EXISTS temp_project_wbs_task_pic (
id BIGINT NOT NULL,
session_id INT NOT NULL,
temp_project_wbs_task_id INT NOT NULL,
user_id INT,
rate INT,
PRIMARY KEY (id, session_id),
FOREIGN KEY (temp_project_wbs_task_id, session_id) REFERENCES temp_project_wbs_task(id, session_id) ON DELETE CASCADE
);
Вот встроенный идентификатор моей модели
@Setter
@Getter
@Embeddable
public class TempPrimaryKey {
@Column(name = "id", nullable = false)
private BigInteger id; //mainId
@Column(name = "session_id", nullable = false)
private Integer sessionId;
// Default constructor
public TempPrimaryKey() {}
// Constructor
public TempPrimaryKey(BigInteger id, Integer sessionId) {
this.id = id;
this.sessionId = sessionId;
}
// Override equals() and hashCode()
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TempPrimaryKey that = (TempPrimaryKey) o;
return Objects.equals(id, that.id) && Objects.equals(sessionId, that.sessionId);
}
@Override
public int hashCode() {
return Objects.hash(id, sessionId);
}
}
Вот это для WbsSession
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_session")
public class TempProjectWbsSession extends BaseEntity {
public static final String NEW_STATUS = "NEW";
public static final String EDIT_STATUS = "EDIT";
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "session_id", nullable = false)
private Integer id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "project_wbs_id", nullable = false)
private ProjectWbs projectWbs;
@JoinColumn(name = "user_id", nullable = false)
private Integer userId;
@Size(max = 255)
@Column(name = "status")
private String status;
}
Вот это для Wbs
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs")
public class TempProjectWbs extends BaseEntity {
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "project_id", nullable = false)
private Project project;
@Size(max = 255)
@Column(name = "status")
private String status;
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbs")
@OrderBy("level ASC, orderNo ASC")
private List tempProjectWbsTabs = new ArrayList();
}
Вот это для WbsTab
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_tabs")
public class TempProjectWbsTab extends BaseEntity {
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbs tempProjectWbs;
@Column(name = "tab_name", nullable = false)
private String name;
@Column(name = "order_no", nullable = false)
private Integer orderNo;
@Column(name = "level", nullable = false)
private Integer level;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_parent_tabs_id", referencedColumnName = "id"),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTab tempParentTabs;
@OneToMany(mappedBy = "tempParentTabs")
@OrderBy("orderNo ASC")
private List childs = new ArrayList();
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsTab")
@OrderBy("level ASC, orderNo ASC")
private List tasks = new ArrayList();
}
Вот это для задачи
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_task")
публичный класс TempProjectWbsTask расширяет BaseEntity {
публичная статическая финальная строка TYPE_TASK = "TASK";
публичная статическая финальная строка TYPE_TAB = "TAB";
публичная статическая финальная строка TYPE_ACTIVITY = "ACTIVITY";
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "project_id", nullable = false)
private Project project;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_tabs_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTab tempProjectWbsTab;
@Size(max = 255)
@NotNull
@Column(name = "name", nullable = false)
private String name;
@Column(name = "period")
private Integer period = 0;
@Column(name = "order_no")
private Integer orderNo;
@Column(name = "start_date")
private LocalDate startDate;
@Column(name = "end_date")
private LocalDate endDate;
@Column(name = "description", length = Integer.MAX_VALUE)
private String description;
@Size(max = 50)
@Column(name = "type", length = 50)
private String type;
@Column(name = "level")
private Integer level;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_parent_task_id", referencedColumnName = "id"),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTask tempProjectWbsParentTask;
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsParentTask")
@OrderBy("orderNo ASC")
private List childs = new ArrayList();
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsTask", fetch = FetchType.LAZY)
private List tempProjectWbsTaskLinker = new ArrayList();
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsTask", fetch = FetchType.LAZY)
private List tempProjectWbsTaskOutputs = new ArrayList();
@JsonIgnore
@OneToMany(mappedBy = "tempProjectWbsTask", fetch = FetchType.LAZY)
private List tempProjectWbsPics = new ArrayList();
public LocalDate getStartDate() {
if (TYPE_TASK.equals(this.type))
return this.startDate;
return this.childs.stream()
.map(TempProjectWbsTask::getStartDate)
.filter(Objects::nonNull)
.min(LocalDate::compareTo)
.orElse(this.startDate);
}
public LocalDate getEndDate() {
if (TYPE_TASK.equals(this.type))
return this.endDate;
return this.childs.stream()
.map(TempProjectWbsTask::getEndDate)
.filter(Objects::nonNull)
.max(LocalDate::compareTo)
.orElse(this.endDate);
}
public String getTaskCode() {
if (this.tempProjectWbsParentTask == null) {
return String.valueOf(this.orderNo);
} else {
return this.tempProjectWbsParentTask.getTaskCode() + "." + this.orderNo;
}
}
}
Вот это для TaskLink
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_task_link")
public class TempProjectWbsTaskLink extends BaseEntity {
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbs tempProjectWbs;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_task_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTask tempProjectWbsTask; //projectWbsTask -> linkedTo task (FS, FF, SS, SF)
@ManyToOne
@JoinColumns({
@JoinColumn(name = "task_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false),
})
private TempProjectWbsTask task;
@Size(max = 50)
@Column(name = "type", length = 50)
private String type;
}
Вот это для TaskOutput
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_task_output")
public class TempProjectWbsTaskOutput extends BaseEntity {
@EmbeddedId
private TempPrimaryKey id;
@JsonIgnore
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", insertable = false, updatable = false)
})
private TempProjectWbs tempProjectWbs;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_task_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTask tempProjectWbsTask;
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "standard_output_id", nullable = false)
private StandardOutputView standardOutput;
@Size(max = 50)
@Column(name = "type", length = 50)
private String type;
@Size(max = 255)
@Column(name = "product_name")
private String outputName;
}
Вот это для TaskPic
@Getter
@Setter
@Entity
@Table(name = "temp_project_wbs_task_pic")
public class TempProjectWbsTaskPic extends BaseEntity {
public static final String TYPE_PM = "TYPEPM";
public static final String TYPE_INDIVIDUAL_ASSIGNEE = "TYPEINDIVIDUAL";
public static final String TYPE_BY_ROLE = "TYPEROLE";
@EmbeddedId
private TempPrimaryKey id;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "temp_project_wbs_task_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "session_id", referencedColumnName = "session_id", nullable = false)
})
private TempProjectWbsTask tempProjectWbsTask;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
private UserView user;
@Column(name = "rate")
private Integer rate;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79301946/error-creating-bean-with-name-entitymanagerfactory-with-embeddedid[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия