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

标签 java jpa orm

<分区>

我有两个实体:

Account {
  @Id
  Long id;
}

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

保存首选项时,我有 accountId,但没有帐户实体。在这种情况下我应该如何保存偏好?

加载帐户实体并将其设置为首选项?对我来说,这似乎是对数据库的错误访问。

是否有一个可持久化的 accountId 字段并将 Account 字段设置为只读?同时拥有 accountId 字段和 Account 字段似乎是多余的?

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

最佳答案

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

关于java - 如何在不在 JPA 中加载相关实体的情况下使用外键保存实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12828919/

相关文章:

java - 如何使用 Java RabbitMQ 并设置 URI 服务器?

java - 导出到 Excel 以获取绝对路径

java - 当实体不包含在持久化单元中时,@Entity注释有什么用

.net - 遗留数据库上的 NHibernate

java - 消息框不会停止出现

java - 将比较器从 C# 移植到 Java

java - 带 Oracle 的 ZonedDateTime

java - toplink 未创建一张表

entity-framework - 在.NET Core 5上运行的ORM

java - 是否有一个类似 ORM 的 java 库,带有运行时定义的表来构建 sql 查询?