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

如何在没有级联数据的情况下链接Spring数据中的关系

陆野
2023-03-14

我正在使用 spring 数据,并且有两个实体,彼此之间分别具有 OneToMany 和 ManyToOne 关系。我希望该关系仅用作外键引用,仅此而已,但是当我保存联系人数据时,它还将我不想要的“人员及其关系”下的所有数据保存。我只希望它将个人实体链接到联系人实体,仅此而已。我尝试了很多东西,包括不同的级联类型和完全删除级联。

@Entity
@Table(name = "person")
public class Person {

    @Id
    @GeneratedValue
    public UUID person_id;


    @OneToMany(mappedBy = "person")
    public List<Contact> contacts;

    ...etc

}
@Entity
@Table(name = "contact")
public class Contact {

    @Id
    @GeneratedValue
    public UUID contact_id;

    @ManyToOne
    @JoinColumn(name = "person_id")
    public Person person;

    ...etc

}

共有2个答案

万承志
2023-03-14

当您为特定人员记录保存联系人数据时,如果您像问题中描述的那样声明域对象,则该人员记录必须已经存在。所以你要这样做:

Person person = personRepository.findOne(personId);
contact.setPerson(person);
contactRepository.save(contact);

这只是创建了一个关系(外键),并将指定人员的主键添加到新创建的联系人记录中。人员记录中没有任何变化。

穆德海
2023-03-14

如果你想删除所有级联,只需使用CascadeType。

https://www.baeldung.com/jpa-cascade-types

 类似资料:
  • 我们想要自己的db连接配置而不是使用JNDI,但同时,我们也想使用DataSource而不是使用Drive verManager,怎么做?

  • 问题内容: 我在Android应用程序上使用Firebase,我知道如何使用EventListener从数据库中获取数据。到目前为止。 我的问题是:我有一个ReciclerView,它显示数据中的信息,但仅当我修改数据库时才显示。如果我关闭该应用程序然后再次打开,它什么也不会显示。然后,我进行一些修改,并将所有元素显示在容器中。 有什么方法可以加载数据而无需等待事件,而是手动获取? 先感谢您。 更

  • 这两个dataframe没有任何公共列。两个数据流中的行数和列数也不同。我尝试插入一个新的虚拟列,以增加row_index值,如下val dfr=df1.withcolumn(“row_index”,monotonically_increasing_id())所示。 但由于我使用的是Spark2,因此不支持monotonically_increasing_id方法。有没有办法把两个datafram

  • 问题内容: 我是Java新手。我想将ResultSet数据插入JavaFX TableView,但我不会使用中间类。我可以将ResultSet行插入到TableView行中作为对象吗? 这是我使用中间类单元的代码 控制者 问题答案: 您需要一些东西来保存数据。某些东西(您称为“中间类”)将成为您的的数据类型。 它不必一定是您创建的类,但是如果您仅使用一般性的东西,那么您的代码将很难理解。例如,您可

  • 问题内容: 我正在尝试设置spring xml配置,而不必创建进一步的。但是,即使我将数据库属性包括在 spring.xml: 我在这里想念什么? 问题答案: 在entityManagerFactory bean定义中指定“ packagesToScan”和“ persistenceUnitName”属性。 请注意,这适用于Spring版本> 3.1

  • 我可以在Spring Boot应用程序中保存实体,而无需。我之所以注意到这一点,是因为在中的方法中添加了之后,我才能够更新实体。 我没有在类级别上注释。在我的服务层中找到的唯一其他位置是不属于方法的方法。我的未扩展。它用注释。我有作为依赖项。我也不是手动开始或提交事务。 员工ontroller.java 员工ervice.java