我在Thymeleaf& amp; Springboot。
我需要知道在三个实体之间设置架构的最佳方法。
事件
项目
任务
关系
项目活动是ManyToOne
Project to Event是OneToMany
Project to Task是OneToMany
Project to Project是ManyToOne
实体
public Event() {}
@Id
private Long id
@ManyToOne(cascade = CascadeType.ALL)
private Project project;
public Project() {}
@Id
private Long id;
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Task> tasks;
@OneToMany(mappedBy = "project")
private List<Event> event;
public Task() {}
@Id
private Long id;
@ManyToOne
private Project project;
目前的情况:
在get和post项目的控制器上,我将Event传递给模型,因为我需要计划屏幕上的Event中的一些信息。
是否有更好的方法在计划UI上显示来自事件但CRUD计划的一些信息。 为什么FK project_id为空?
更新
我试过了:
public Task() {}
@Id
private Long id;
@ManyToOne(optional = false)
@JoinColumn(name = "project_id")
private Project project;
仍然没有在任务表上获得project_id。
答案 0 :(得分:0)
为什么FK project_id为空?
您缺少将多对一关系映射到FK所在列的注释。此外,如果要保留Task实例并让JPA框架自动保留项目,则应定义级联策略。
@JoinColumn(name="project_id")
@ManyToOne(cascade=ALL)
private Project project;
看看一些JPA文档,这是一本很好的免费书: