当前位置: 首页 > 知识库问答 >
问题:

Spring boot JPA save manytomany关系

湛功
2023-03-14

我试图存储一个manytomany关系,但它没有存储关系。

下面的代码生成了3个表。

这是我发送到服务器的JSON:

{“abbreviatedsequence”:“xdf”,“medals”:[{“name”:“purple”,“id”:1},{“name”:“red”,“id”:2}],“sequence”:“xdfree”,“name”:“savier”}

java

@Entity(name="employees")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Employee {
    @Id
    @GeneratedValue(generator="increment")
    @GenericGenerator(name="increment", strategy = "increment")
    private Long id;

    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
@Entity(name="soldier")
public class Soldier extends Employee{

    private String sequence;

    private String abbreviatedSequence;

    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "soldiers")
    private List<Medal> medals;

    public List<Medal> getMedals() {
        return medals;
    }

    public void setMedals(List<Medal> medals) {
        this.medals = medals;
    }

    public String getSequence() {
        return sequence;
    }

    public void setSequence(String sequence) {
        this.sequence = sequence;
    }

    public String getAbbreviatedSequence() {
        return abbreviatedSequence;
    }

    public void setAbbreviatedSequence(String abbreviatedSequence) {
        this.abbreviatedSequence = abbreviatedSequence;
    }

}
@Entity
@Table(name = "medal")
public class Medal {
    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "medal_seq")
    @SequenceGenerator(name = "medal_seq", sequenceName = "medal_seq", allocationSize = 1)
    private Long id;

    @Column(name = "NAME", length = 50, unique = true)
    @NotNull
    @Size(min = 3, max = 50)
    private String name;

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "soldier_medals", joinColumns = {
            @JoinColumn(name = "medal_id", nullable = false, updatable = false) },
            inverseJoinColumns = { @JoinColumn(name = "soldier_id",
                    nullable = false, updatable = false) })
    private List<Soldier> soldiers;


    public List<Soldier> getSoldiers() {
        return soldiers;
    }

    public void setSoldiers(List<Soldier> soldiers) {
        this.soldiers = soldiers;
    }


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
@RestController
public class SoldierController {
    @Autowired
    private SoldierService soldierService;

    @RequestMapping(value="/api/contextsource/soldier",method= RequestMethod.POST)
    public Soldier addSoldier(@RequestBody Soldier soldier) {       
        return soldierService.addSoldier(soldier);
    }

}

共有1个答案

葛驰
2023-03-14

我以错误的顺序持久化了实体。我就是这样解决的。

@RequestMapping(value="/api/contextsource/soldier",method= RequestMethod.POST)
    public Soldier addPeptide(@RequestBody Soldier soldier) {       
        for(Medal s: soldier.getMedals()) {
            Medal ss = medalService.getMedalById(s.getId());
            ss.getMedals().add(soldier);
            medalService.addMedal(ss);
        }           
        return null;
    }
 类似资料:
  • 说我有这样的关系 那么,我是否可以说这种关系是一种关联,而不是聚合或组合。 我可以说狮子使用食物并像这样绘制UML图吗 此外,这种关系也没有多重性,因为Lion没有Food数组,食物也没有Lions数组作为实例变量。不同于复合和聚合,其中关系具有多重性。 如果我希望Food也能以同样的方式使用Lion呢。我在两个班级之间画两个箭头吗?

  • 好了,这里是第一次用到NutDao的关联关系了, 打开User类,加入2行 @One(target=UserProfile.class, field="id", key="userId") protected UserProfile profile; 自然的,为其添加Getter/Setter

  • 关联实体和关联关系属性有什么区别?在我的一本名为《现代数据库管理》(Hoffer,第11版)的书中,作者陈述了两者之间的区别。然而,它并没有真正解释为什么会有差别,相反,它只是给出了它们是如何不同的例子。 据我所知,一个有一个属性关联的关系是一个关联关系属性,并用一条虚线表示一个圆角矩形,该矩形内有该属性。而关联实体是描述关系的多个属性。两者都只能用于ER图解中的多对多关系。我的思维过程正确吗?

  • 问题内容: 我有这种关系:一个用户可以有零只或一只狗,但是一只狗必须属于某人。 我想定义以下范围: 我可以在第一种情况下执行此操作,因为默认情况下,在rails中,联接是INNER JOIN: 1 /这种针对第一个示波器的解决方案是否足够好? 2 /第二个课程你会做什么? 3 /(有一些关联)是否有更好的方法?: 谢谢你的帮助! 问题答案: 对于问题2,我认为以下方法应该有效: 其中include

  • 第 7 章 关联关系映射

  • 问题内容: 我试图弄清楚如何构建该数据库。之前我已经使用过Apple的核心数据,现在我正在从事另一个需要MySQL的项目。我是MySQL的新手,所以请放轻松。:) 在这个例子中,假设我有三个表,,,和。把它画出来,一个可以有多个s,但是一个只能有一个;每个都有其主键,我需要使用它来获取正确的信息。 那么如何在这里建立这样的关系呢?我听说过创建索引和外键,但不确定它们如何正常工作。 最后,我需要做的

  • 主要内容:嵌入式关系,引用式关系MongoDB 中的关系表示多个文档之间在逻辑上的相互联系,文档之间可以通过嵌入或引用来建立联系,这种联系可以是 1:1(1对1)、1:N(1对多)、N:1(多对1)、N:N(多对多)。例如我们要存储用户的收货地址,一个用户可以拥有多个收货地址,从而形成 1:N 的关系。 下面展示了一个记录用户信息的文档的结构: 以下是记录用户地址的文档结构: 嵌入式关系 在嵌入式关系中,我们可以将记录用户地址的

  • 问题内容: 想象一个情况,约翰有两个孩子爱丽丝和鲍勃,鲍勃有一只猫猎户座。 几年后,约翰想重命名为简。 …让孩子们知道。 然后我必须更新cat,因为Bob变了。 一个对象更改时,是否可以自动更新所有相关对象?我看了看Cursors,但是不确定它们是否是解决方案。如果可以的话,您能举个例子吗? 问题答案: 当一个不可变集合中的一个对象发生更改时,是否可以自动更新所有相关对象? 简短答案 没有。 长答