在JPA多对一中避免重复
我以前曾为Hibernate问过这个问题的一个变体。然而,我现在正在使用Eclipselink,它仍然困扰着我。这很简单: 我需要持久化一个地址对象,该对象在多对一关系中包含一个城市名称。我希望能够保存地址并保存城市——但前提是城市是独一无二的。据我所知,JPA不直接支持这一点吗?可能的解决方案包括使用城市名称作为城市表中的唯一id,查询特定城市的城市表,然后在保存之前将该对象添加到地址中。我确实看到了一些StackOverflow问题/答案,这些问题/答案似乎表明这是一种方法()在JPA多对一中避免重复,jpa,eclipselink,Jpa,Eclipselink,我以前曾为Hibernate问过这个问题的一个变体。然而,我现在正在使用Eclipselink,它仍然困扰着我。这很简单: 我需要持久化一个地址对象,该对象在多对一关系中包含一个城市名称。我希望能够保存地址并保存城市——但前提是城市是独一无二的。据我所知,JPA不直接支持这一点吗?可能的解决方案包括使用城市名称作为城市表中的唯一id,查询特定城市的城市表,然后在保存之前将该对象添加到地址中。我确实看到了一些StackOverflow问题/答案,这些问题/答案似乎表明这是一种方法() 我是不是遗漏
我是不是遗漏了什么?是否有其他/更好的方法?是的,解决方案是从数据库中获取城市,如果不存在,则创建城市,并将其设置为地址
这是没有办法的。不过,城市名称不必是主键。我将使用一个自动生成的、非功能性的代理键作为PK,并在城市名称上添加一个唯一的约束。这至少可以让您修复城市名称中的拼写错误,而无需更新引用它们的数千个地址。感谢您的快速反馈,非常感谢。