当前位置: 首页 > 面试题库 >

如何在不将相关实体加载到JPA中的情况下使用外键保存实体?

彭烨烁
2023-03-14
问题内容

我有两个实体:

Account {
  @Id
  Long id;
}

Preference {
  ...
  @ManyToOne
  private Account account;
}

保存首选项时,我具有accountId,但没有Account实体。在这种情况下,如何保存首选项?

加载帐户实体并在首选项上进行设置?对我来说,这似乎是对数据库的错误旅行。

是否具有一个可持久保存的accountId字段并使Account字段为只读?同时拥有一个accountId字段和一个Account字段似乎多余吗?

使用NamedQuery保留首选项?我希望只是通用地保存一个没有特殊逻辑的实体。


问题答案:

使用em.getReference(Account.class, accountId)。它在不返回数据库的情况下,在实体上返回未初始化的代理。您的用例是此方法存在的主要原因。



 类似资料:
  • 我试图验光一些报告,并试图删除需要加载一些昂贵的相关记录(多个级联加载,每个约500条记录)。 我的实体是这样的: 以及: 我的问题是,当我做这个调用:Hibernate去实例化Foo实体,并加载所有相关的记录,即使我只想要/需要id,这是我的Bar表中的外键。 有没有办法得到福。在没有加载Foo记录的情况下从酒吧获得Id?提前谢谢。

  • 问题内容: 我有以下用于测试的类: 为了进行测试,我想通过一次SaveChanges调用插入一家公司和该公司的一名员工,如下所示: 即使我没有使用导航属性,而是通过Id建立了联系,但这种方式还是神秘地起作用了- 员工用正确的外键保存了公司的外键,该公司的外键从0更新为实际值,这使我走了出去!一些隐藏的C#功能? 然后,我决定添加更多代码,上面的代码段中对此进行了注释,使其插入了2个Company实

  • 我有一个实体,它与其他实体有关系,比如下面的实体。实际上,实体有许多领域。 对于一些搜索,我只对的Basic属性感兴趣,而不想检索任何关系。一个选项是使用

  • 在我的模型中,我有一个聚合根,每个根都有一个关联的的集合。每个都有一个反向导航属性。 我需要一次获取所有的,这导致在我的中出现以下查询 是来自EF上下文的。 问题是懒惰加载没有实现(我也不想实现它),查询后的属性是。所有的东西都正确地通过EF映射。 要检索具有非空的所有的查询应该是什么? 我用的是EF6。

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

  • 我想在单个查询中获取多个实体,因为n1查询持续时间太长。例如,SQL join查询在数据库上持续5秒,但由于N 1抓取,elcipselink持久性抓取持续50-80秒。我发现只要@ManyToOne关系被实现,LEFT JOIN FETCH就不起作用了。有人知道这个案子的左联取法吗? 请查找以下简化实体。 我就是这样取的。我已经尝试了以下所有组合,但每个组合都会对SituationData中的每