首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Hibernate和Spring只存储一个双向OneToOne关系实体

使用Hibernate和Spring只存储一个双向OneToOne关系实体
EN

Stack Overflow用户
提问于 2021-06-21 17:19:57
回答 1查看 43关注 0票数 0

Situation

使用Spring (数据)和Hibernate。relationship.

  • Both有两个具有双向@OneToOne的实体共享相同的密钥(使用@PrimaryKeyJoinColumn)

)

问题

  • I希望从数据库
  • 加载A和B,我想临时修改B(仅在内存中)
  • ,我想要对B
  • 进行计算,但不想存储A,而不是B

<代码>F 223

在守则中制定:

代码语言:javascript
复制
a = repositoryForA.findById(a);
b = a.getB();
a.setAttribute(abc);
b.setAttribute(xyz);
repositoryForA.save(a);

然而,我看到的行为是,总是同时存储A和B(通过测试和hibernate日志验证)。

我试过什么

entityManager.detach(b); repository.save(a)

  • No

  • 在保存A之前分离B:传播
  • a.setB(null)和保存

前分离

这个是可能的吗?为了这个目的,这种关系可能不好吗?

实体

代码语言:javascript
复制
@Entity
public class A {

    @Id
    @GeneratedValue
    protected Long id;

    @OneToOne
    @PrimaryKeyJoinColumn
    private B b;

    // Some attributes...

}

@Entity
public class B {

    @Id
    protected Long id;

    @OneToOne(mappedBy = "b")
    @MapsId
    @JoinColumn(name = "id")
    private A a;

    // Some attributes...
    
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-21 22:18:18

我使用了@K.Nicholas提出的类似解决方案。我刚刚创建了实体B的副本来执行临时计算。我没有给repositoryForB.save(b)打电话。因此,在保存a时,只存储a本身的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68072175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档