Java 在hibernate中,在辅助表中插入新记录,而不在主表中插入(一个实体,两个表)

Java 在hibernate中,在辅助表中插入新记录,而不在主表中插入(一个实体,两个表),java,hibernate,annotations,Java,Hibernate,Annotations,我在hibernate中有一个名为country的实体,但出于某种原因,我想将其映射到两个表中 这是我的国家班和它的ER图 但正如您所看到的,这个实体对countryCode有一个唯一的约束 当我想添加一个具有两个名称(不同语言)的实体时,会受到此约束,例如: 名称---国家代码----语言ID 美国------1------英 美国……1…………fa 我抓住了一个例外 现在 我的问题是: 如何将新记录插入辅助表而不将新的相关记录插入主表 注意:这两条记录可能是由客户端以不同的请求发送的您的

我在hibernate中有一个名为country的实体,但出于某种原因,我想将其映射到两个表中 这是我的国家班和它的ER图

但正如您所看到的,这个实体对countryCode有一个唯一的约束

当我想添加一个具有两个名称(不同语言)的实体时,会受到此约束,例如:

名称---国家代码----语言ID

美国------1------英

美国……1…………fa

我抓住了一个例外

现在 我的问题是: 如何将新记录插入辅助表而不将新的相关记录插入主表


注意:这两条记录可能是由客户端以不同的请求发送的

您的域模型根本无法处理您所显示的数据建模方式的唯一约束。您要么需要消除约束,要么重新设计数据模型。你能详细说明一下你所代表的名字/国家代码/语言ID吗?是不是像en_US与国家代码001联系在一起?我问这个问题是因为我认为有一个解决方案(如hibernate中的一些注释)可以帮助我做到这一点。。。。。。。。但我似乎应该重新设计我的数据模型,将两个表(country和country_lang)合并到一个表中,并带有一些冗余。为什么要合并两个表?您希望一个国家有多个名称(使用不同的语言)。只需使用OneToMany/ManyToMany在一个国家/地区内创建一个国家/地区对象列表并正确映射即可。是的,当用户在一次请求中使用某种语言列表创建国家/地区对象时,这是可能的。但在我的web应用程序场景中,用户可以随时发送不同的国家/地区对象创建请求,请查看此链接。。。这是我的web应用程序场景