gpt4 book ai didi

java - 如何更新 spring jpa 多对多关系和 json 格式来执行此操作

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:36 24 4
gpt4 key购买 nike

也许是 spring data-jpa 的另一个多对多关系问题以及如何使用另一个现有实体更新现有实体。我将放置一个简短版本的实体,以便仅在错误发生时进行澄清。

我有一个 Peticion 实体:

@Entity
@Table(name = "peticiones")
@JsonIdentityInfo(generator =
ObjectIdGenerators.PropertyGenerator.class,property = "id", scope =
Peticion.class)
@Validated
public class Peticion
{

private int id;

private Usuario usuario;

private Categoria categoria;

private Set<Tag> tags;

@ManyToMany( fetch = FetchType.LAZY, cascade = {
CascadeType.MERGE
} )
@JoinTable( name="peticion_tag", joinColumns= @JoinColumn(name = "peticion_id", referencedColumnName="id"), inverseJoinColumns = @JoinColumn(name="tag_id", referencedColumnName="id") )
public Set<Tag> getTags() {
return tags;
}

public void setTags(Set<Tag> tags) {
this.tags = tags;
}

和标签实体:

@Entity
@Table(name = "tags")
@JsonIdentityInfo(generator =
ObjectIdGenerators.PropertyGenerator.class,property = "id", scope =
Tag.class)
public class Tag
{

private int id;

@Size( min = 4 )
private String nombre;

private Set<Peticion> peticiones;

private Set<Categoria> categorias;

private Set<Usuario> usuarios;

@ManyToMany( mappedBy="tags" )
public Set<Peticion> getPeticiones() {
return peticiones;
}

public void setPeticiones(Set<Peticion> peticiones) {
this.peticiones = peticiones;
}

好的,所以当我尝试以以下格式放置或修补一个 Peticion 时: { “id”:123, “usuario”:{ “编号”:5 }, “类别”:{ “ID”:7 }, “标签”:[ { “id”:3 }, { “id”:10 } ] }

当我发送此信息时,我收到一条错误,指出我违反了约束条件,说 name 我认为 Tag 的一个属性为 null...所以我发现这是试图创建另一个实体,但这不是我想要做的情况,我想更新 Peticion 和 Tag 之间的关系,例如,如果我这样做:

{
"id": 123,
"usuario":{
"id": 5
},
"categoria":{
"id": 7
},
"tags":[]
}

它工作得很好,我的意思是它删除了之前的关系标签。所以我不知道我是否正确发送了 json,或者我是否必须在我的实体中添加另一个配置注释或其他内容。注意:我使用 JpaRepository 进行保存/更新,我的 Controller 仅调用方法 save。

谢谢

最佳答案

您可能缺少对数据库层上关系实体的获取,我认为您还应该共享用于获取链接数据的存储库和查询。

关于java - 如何更新 spring jpa 多对多关系和 json 格式来执行此操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49934612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com