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

将JPA实体一分为二?

闻华容
2023-03-14

假设我拥有以下实体:

@Entity
@Table (name = "customers)
public class CustomerImpl implements Customer {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
private Long id;

@Column(name = "name", nullable = false)
private String name;

@Column(name = "surname", nullable = false)
private String surname;

@Column(name = "country", nullable = false)
private String country;

@Column(name = "city", nullable = false)
private String city;

@Column(name = "street", nullable = false)
private String street;

@Column(name = "zipCode", nullable = false)
private String zipCode;

// constructor + getters

}

我想创建一个名为Address的新类,它将包含国家、街道、城市和邮政编码变量。然后将用Address对象替换列出的变量,以使代码更可读、更清晰。

在我的例子中,地址类应该嵌入还是应该将其分配为新实体,并在地址和客户之间给出@OneToOne关系?

谢谢你

共有1个答案

祁和通
2023-03-14

为了使代码更具可读性和更清晰,您应该创建一个包含country、city。。。,然后你可以像这样使用@OneToOne关系:

在客户类中:

@OneToOne(mappedBy = "customer", fetch = FetchType.LAZY)
private Address address;
// Getter + Setter

在ADRESE类中:

@OneToOne
@JoinColumn(name="id")
private Customer customer;
 类似资料:
  • 问题内容: 我开始使用Spring Data JPA在Spring Boot应用程序上进行工作,以在用户和角色之间建立ManyToMany关系。 此关系在User类中定义如下: 我使用以下角色创建角色: 之后向用户分配角色失败: 引发以下异常(为便于阅读而设置格式): 但是,如果在创建关系之前保存了用户,则可以正常工作: 我不得不两次保存/更新用户似乎有些不合理。有什么方法可以在不先保存 用户的

  • 我可能需要一些帮助,因为我被这些文件弄糊涂了: 我有一个JPA母公司: 和孩子: 如果我只是增加联系人,我希望JPA能够建立这种关系。 e、 g: 现在发生的是: 触点插入DB(良好) 使用providerX。联系人中的id。提供者列(良好) provider\u contact表中未显示任何关系条目 我知道我可以将联系人设置为提供者的属性<代码>providerX。联系人。添加(c)。。。回购。

  • 我有一个相当大的系统,它的规范是由子实体上的几个方法构建的。所以我有一个用户,他有一个宠物木偶,就像这个问题一样。我的关系是双向的,所以Pet在用户上也有多对一的关系,我正在努力将子实体上的规范转换为应用于父实体。 我查找的大多数问题都显示了如何在不同的实体上应用规范,或者在规范执行后获得不同的实体。这不是我想要的。 我试着写一个这样的方法: 但我不知道如何编写它(我尝试过使用Join,但没能“告

  • 问题内容: 我有一个java.sql.Blob的JPA实体: 如何创建该实体的实例?我想设置与方法,但如何让从JPA?只是接口,对于不同的数据库有不同的实现,因此我认为JPA应该给我正确的实现。如何获得? 问题答案: 使用字节数组: 如果要使用流,请使用以下命令创建Blob:

  • 我想知道是否可以创建一个从多个表中获取数据的实体。 我有一个基于TableA的实体。 特殊性是,我还需要TableD的数据,它链接到TableC,它链接到TableB最后链接到TableA,带有TableA id 我完全知道我可以在表B、C、D上创建一个实体。但我不需要这些表上的任何数据,除了TableD。B和C只是“一条要走的路”。 http://img11.hostingpics.net/pi

  • 我在Spring boot版本1.3.6中使用Spring Data JPA。 null 这将返回父实体,而不是子实体。 知道怎么做吗?

  • null 我能找到的使用JPA/Hibernate的唯一有效解决方案是执行以下步骤。这是因为hibernate将实体保留在第一级缓存中,直到事务结束。 创建新实体 强制快速刷新() 分离实体 这样做的开销是 null 使用JDBC或JdbcTemplate,但您必须为实体编写自己的插入 所以问题是:是否存在同时坚持和分离的可能性,或者甚至更好地坚持而不成为被管理的?

  • 我有一个使用和的Spring Boot应用程序。您可以在这个GitHub存储库中找到整个代码。 我的问题是,如何在没有任何外键的情况下,通过使用结构向特定列添加国际化功能? 例如,我想定义一个JPA实体,如下所示: 然后,对于和地区,列中的数据将按如下方式存储: 然后,当当前区域设置为Köln时,当设置为区域设置时,则在读取数据时获取数据! 此外,当我们存储数据时,传递的字符串以JSON格式存储在