我有这个“父母”课程:
@Entity
@Table(name = "parent_table")
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
@OneToMany(fetch=FetchType.LAZY, mappedBy = "parent", cascade = {CascadeType.ALL})
List<Child> children;
}
而且,我有以下子类:
@Entity
@Table(name = "children")
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long childId;
@ManyToOne
@JoinColumn(name="parent_id")
private Parent parent;
private String name;
}
我也将其作为请求正文发送:
{
"firstName": "Test",
"lastName": "Parent",
"children":[{
"name":"jack"
},
{
"name":"jill"
}
]
}
好消息是,我可以直接从父存储库中将这些子代写入数据库,但是...当我执行GET以获取父代时,它会在没有子实体的情况下返回(即使它们在数据库中,在其表中)
半有用的更新(MAYBE?):我注意到子记录的数据库中的parent_id字段似乎没有被填充!不知道为什么!
答案 0 :(得分:0)
您正在使用错误的列名创建关系。
您的父类的 var app = new Vue({
el: '#app',
data() {
return {
permissions: [{
id: 1,
name: 'create'
},
{
id: 2,
name: 'edit'
},
{
id: 3,
name: 'delete'
}
]
}
},
computed: {
getFormPermissionId() {
var permission = this.permissions;
//Creating String
str = "";
for (let i = 0; i < permission.length; i++) {
str += permission[i].id + "\n";
}
return str;
}
}
})
列定义为:
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
{{getFormPermissionId}}
</div>
这将在您的id
表中生成一列@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
。
您的子类的外键定义为:
id
您表示要在parent
表中的 @ManyToOne
@JoinColumn(name="parent_id")
private Parent parent;
列之间建立关系。这样的列不存在。
如果您希望指示外键列名称必须为parent_id,则必须将其定义为:
parent_id