Java 原因:org.hibernate.MappingException:实体映射中重复列

Java 原因:org.hibernate.MappingException:实体映射中重复列,java,hibernate,postgresql,maven,jpa,Java,Hibernate,Postgresql,Maven,Jpa,我是使用maven和JBOSS处理JPA的初学者,使用Restful来制作我的应用程序,我在部署时遇到了以下问题 Caused by: javax.persistence.PersistenceException: [PersistenceUnit: com.company.test_resources_war_1.0-SNAPSHOTPU] Unable to build EntityManagerFactory Caused by: org.hibernate.MappingExc

我是使用maven和JBOSS处理JPA的初学者,使用Restful来制作我的应用程序,我在部署时遇到了以下问题

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: com.company.test_resources_war_1.0-SNAPSHOTPU] Unable to build EntityManagerFactory
     Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: database.Photo column: fid_module (should be mapped with insert = \ "false \" update = \ "false \") "}}
不是那个步骤,检查了所有的posles解决方案,但没有找到任何东西,有人能帮我吗

提前谢谢

下面我展示了postgres中的SQL代码,我已经完成了映射

我有三个表格(活动事件照片),其中一个(照片)指的是另外两个(活动事件),但在一列(照片.fid_模块

SQL代码(引擎数据库-->Postgresql):

创建表活动(
id\u活动整数不为空,
名称字符变化(150),
说明文字,
约束id\U活动\U pk主键(id\U活动)
)
创建表事件(
id\u事件整数不为空,
名称字符变化(150),
说明文字,
没有时区的日期时间戳,
约束id\U事件\U主键(id\U事件)
)
创建表格照片(
id\u照片整数不为空,
路径字符变化(150),
fid_模块整数不为空,
约束id_photo_pk主键(id_photo),
约束fk_照片_活动外键(fid_模块)
参考活动(id_活动)匹配简单
更新时无操作删除时无操作,
约束fk_照片_事件外键(fid_模块)
参考事件(id\U事件)匹配简单
更新时无操作删除时无操作
)
现在,我在Netbenas的帮助下进行了映射,并给出了以下代码(我对三个表进行了映射,但在演示过程中,问题出在类Photo.java


我正在使用JPA进行持久化(但是mvn clean安装和mvn jboss as:deployMove Pull me hibernate dependencies)谁能告诉我我的错误是什么,或者可以解决这个问题。谢谢。

您有两个同名的列映射

 @JoinColumn(name = "fid_module", referencedColumnName = "id_activity")
 @JoinColumn(name = "fid_module", referencedColumnName = "id_event")
更改名称属性之一

查看您的异常,您可以阅读:

Repeated column in mapping for entity

正如在另一个答案中所指出的,Java代码为两个字段指定了相同的联接列名,这是行不通的

如果这个Java代码是由netbeans映射工具生成的,正如您的注释所示

现在,我在Netbenas的帮助下所做的映射给了我以下代码

错误的Java映射可能是由SQL中的约束组合错误造成的

您对
照片的定义中有:

  CONSTRAINT fk_photo_activity FOREIGN KEY (fid_module)
      REFERENCE activity (id_activity) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_photo_event FOREIGN KEY (fid_module)
      REFERENCE event (id_event) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
它试图使列
fid_模块
成为引用
活动的外键
,同时也是引用
事件的外键,但无法工作


如果您需要从
photo
到这两个表的外键,则需要使用两个不同的列。

+1:我认为他正在生成这个Java,根本问题在于DDL,但这绝对正确。您有理由认为attibutes的名称相同,但问题是,我需要这张照片的一列引用表:事件和活动,我怎么能在映射中做到这一点?我不明白答案,映射指向两个不同的表,还是不?为什么不能在这两个表中使用相同的列名?是的,但是为什么不能使用具有两个不同实体的相同列?有人能提出解决方案吗?谢谢你的回答。然后我会重新制作我的数据库结构??是的。我认为不能将一列作为两个不同表的外键。
  CONSTRAINT fk_photo_activity FOREIGN KEY (fid_module)
      REFERENCE activity (id_activity) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_photo_event FOREIGN KEY (fid_module)
      REFERENCE event (id_event) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION