Java hibernate映射中的另一个重复列

Java hibernate映射中的另一个重复列,java,hibernate,Java,Hibernate,Hibernate给了我以下异常 org.hibernate.MappingException: Repeated column in mapping for entity: Pricelist column: ID_OFFER (should be mapped with insert="false" update="false") 但我真的找不到ID_报价的重复引用。这里是涉及的两个映射文件 Offer.hbm.xml 报价 Pricelist.hbm.xml 价格表 我快疯了。

Hibernate给了我以下异常

 org.hibernate.MappingException: Repeated column in mapping for entity: Pricelist column: ID_OFFER (should be mapped with insert="false" update="false")
但我真的找不到ID_报价的重复引用。这里是涉及的两个映射文件

Offer.hbm.xml


报价
Pricelist.hbm.xml


价格表

我快疯了。有人能看到它应该复制到哪里吗?请注意:我的模式的两个表有一个名为这样的列:OFFERS.ID\u OFFER,它是表OFFERS的主键,PRICELIST.ID\u OFFER有一个外键约束引用,显然是OFFERS.ID\u OFFER。

您忘记了将此列映射为拥有方(
OFFER.hbm.xml
文件)


@zxcf所说的话,实际上使这个例外消失了,但在我的脑海中又出现了另一个问题。为什么下面的映射不产生同样的问题

servicelement.hbm.xml


服务要素
Price.hbm.xml


价格
这不是完全相同的映射吗?但它不会抛出任何异常。下面是DDL:

创建表“CE_价格表”。“报价”
(“ID_报价”编号(10,0),
“名称”VARCHAR2(255个字符);
创建唯一索引“CE_价格表”。“CE_价格表”上的“报价主键”。“报价”(“ID_报价”);
更改表“CE_价格表”。“提供”添加约束“提供”主键(“ID_提供”);
创建表“CE_价格表”。“价格表”
(“ID_价格表”编号(10,0),
“ID_报价”编号(10,0);
创建唯一索引“CE_PRICELIST”。“CE_PRICELIST”。“PRICELISTS”(“ID_PRICELIST”);
更改表“CE_PRICELIST”。“PRICELISTS”添加约束“PRICELISTS_PK”主键(“ID_PRICELIST”);
更改表“CE_价格表”。“价格表”添加约束“价格表报价”外键(“ID_报价”)引用“CE_价格表”。“报价”(“ID_报价”)启用;
创建表“CE\U价格表”。“服务\U元素”
(“ID_服务_元素”编号(10,0));
创建唯一索引“CE_价格表”。“CE_价格表”上的“服务元素”;“服务元素”(“ID_服务元素”);
更改表“CE_价格表”。“服务元素”添加约束“服务元素”主键(“ID_服务元素”);
创建表“CE_价格表”。“价格”
(“ID_价格”编号(10,0),
“ID_服务_元素”编号(10,0);
创建唯一索引“CE_PRICELIST”。“CE_PRICELIST”上的“PRICES_PK”。“PRICES”(“ID_PRICE”);
更改表“CE\U价格表”。“价格”添加约束“价格\U服务\U元素\U ID\U FK”外键(“ID\U服务\U元素”)
参考“CE_价格表”。“服务元素”(“ID_服务元素”)启用;
报价有一个ID_报价PK,由PRICELISTS.ID_报价引用;报价有一套; 服务元素在ID\u服务元素上有一个主键,由PRICES.ID\u服务元素引用;ServiceElement有一套


那么,为什么在一种情况下需要反向属性而在另一种情况下不需要反向属性呢?

如果不使用
inverse
属性,就不可能有双向的一对多映射。再看看您的表,我确信如果您的模式是从映射XML文件生成的,那么您有两个存储外键的位置(join table或
PRICES
table中的附加列)。我编辑了我的答案,添加了表的DDL。我确信这是我看不见的东西,而且,你知道,总是专注于某件事会让你注意力不集中……区别在于除了
(我检查过它会导致这种行为)之外,还缺少
not null=“true”
,但老实说,我不太了解Hibernate,我不知道除键外not null意味着什么。。
<set name="pricelists" sort="unsorted" table="PRICELISTS">
   <key not-null="true">
      <column name="ID_OFFER" not-null="true" precision="10" scale="0" sql-type="NUMBER"/>
   </key>
   <one-to-many class="Pricelist"/>
</set>
<set name="pricelists" sort="unsorted" table="PRICELISTS" inverse="true">
   <key not-null="true">
      <column name="ID_OFFER" not-null="true" precision="10" scale="0" sql-type="NUMBER"/>
   </key>
   <one-to-many class="Pricelist"/>
</set>