Quarkus panache 1:m映射没有给出正确的响应



我正在尝试用gradle测试quarkus上的1:m映射。使用的扩展:

夸库斯休眠模式

quarkus弹簧网

邮递员:

POST打开http://localhost:8080/tree带请求:

{
"name":"mango",
"fruits": [
{"name":"a",
"color":"red"
},
{"name":"b",
"color":"yellow"
}
]
}

现在,当进行"上车"时http://localhost:8080/tree得到空的水果。为什么它是空的找不到。

[
{
"treeId": 1,
"name": "mango",
"fruits": []
}
]

我使用了以下1个控制器类和2个实体类。

@RestController
public class TreeController {

@PostMapping("/tree")
@Transactional
public void addTree(Tree tree) {
Tree.persist(tree);
}

@GetMapping("/tree")
public List<Tree> getTree() {
return Tree.listAll();

}
}
@Entity
public class Tree extends PanacheEntityBase{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long treeId;

public String name;

@OneToMany(mappedBy = "tree", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
public List<Fruit> fruits;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Fruit> getFruits() {
return fruits;
}
public void setFruits(List<Fruit> fruits) {
this.fruits = fruits;
}
public Long getTreeId() {
return treeId;
}
public void setTreeId(Long treeId) {
this.treeId = treeId;
}

}
@Entity
public class Fruit extends PanacheEntityBase {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long fruitId;
public String name;
public String color;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="treeId")
public Tree tree;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Tree getTree() {
return tree;
}
public void setTree(Tree tree) {
this.tree = tree;
}
public Long getFruitId() {
return fruitId;
}
public void setFruitId(Long fruitId) {
this.fruitId = fruitId;
}
}

在持久化之前可以尝试设置后引用吗?

@RestController
public class TreeController {

@PostMapping("/tree")
@Transactional
public void addTree(Tree tree) {
for(Fruit fruit : tree.fruits)
fruit.tree = tree;
Tree.persist(tree);
}

@GetMapping("/tree")
public List<Tree> getTree() {
return Tree.listAll();

}
}

最新更新