我想在发布对象的同时,从关系的引用表中返回数据。
关系定义如下:
@Entity
@Table( name = "application")
public class Application {
@Id
@JsonIgnore
private Long id;
@ManyToOne
@JoinColumn(name = "product_category")
private ProductCategory productCategory;
...
}
并且:
@Entity
@Table(name = "product_category")
public class ProductCategory {
@Id
@Column(name = "product_category_id")
private Long productCategoryId;
@Column(name = "description")
private String description;
@JsonIgnore
@OneToMany(mappedBy = "productCategory")
private Set<Application> applications;
...
}
我的product_category表具有以下数据:
发布具有以下结构的Json对象时:
...
{
"productCategory": "0"
}
...
我想获得以下json输出:
...
"productCategory": {
"productCategoryId": 0,
"description": "Personal Loan"
},
...
但是我却得到了:
...
"productCategory": {
"productCategoryId": 0,
"description": null
},
...
可以请教吗?
答案 0 :(得分:1)
您的问题中没有太多代码,但是您在评论中提到了返回的结果:
if(isset($_POST['submit'])){
$turn =$_POST['turn'];
foreach($turn as $turn){
$value = "'".$turn."'";
$var_aux[] = $value;
}
$values = implode(‘ , ’$var_aux);
$sql_values = "(" .$values. ")";
$query = "INSERT INTO correspondencia (`turn`)
VALUES('".$sql_values.";')”;
$mysqli->query($query);
}
?>
另一方面,您没有在映射中级联从父级到子级的更改:
return applicationRepository.save(appRequest);
我认为将@ManyToOne
@JoinColumn(name = "product_category")
private ProductCategory productCategory;
更改为@ManyToOne
应该会有所帮助。
编辑:
如果您无法更改模型,只需返回您的实体:
@ManyToOne(cascade=CascadeType.ALL)
这种方式,jpa不会在保存时覆盖实体,它只是从db中读取一个。