本文介绍了引起:org.hibernate.MappingException:实体映射中的重复列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



 <$ c 

$ c>导致:javax.persistence.PersistenceException:[PersistenceUnit:com.company.test_resources_war_1.0-SNAPSHOTPU]无法构建EntityManagerFactory
导致:org.hibernate.MappingException:实体映射中的重复列:数据库.Photo专栏:fid_module(应该被映射为insert = \false \update = \false \)}}

不是这一步,检查所有posles解决方案,但没有发现任何东西,有人可以帮助我吗?



下面我展示了postgres中的SQL代码,并且我做了映射。



我有三个(活动活动照片)其中一个( photo )引用其他两个活性 photo.fid_module )

SQL代码(工程师数据库 - > event >

  CREATE TABLE活动(
id_activity整数不为空,
名称字符变化(150 ),
描述文本,
CONSTRAINT id_activity_pk PRIMARY KEY(id_activity)


CREATE TABLE事件(
id_event整数非空,
名称字符变化(150),
描述文本,
不带时区的日期时间戳,
CONSTRAINT id_event_pk PRIMARY KEY(id_event)


CREATE TABLE photo(
id_photo integer not null,
path character varying(150),
fid_module integer not null,
CONSTRAINT id_photo_pk PRIMARY KEY(id_photo),
CONSTRAINT fk_photo_activity FOREIGN KEY(fid_module)
REFERENCE activity(id_activity)MATCH SIMPLE
ON UPDATE NO ACTION ON ACTION,
CONSTRAINT fk_photo_event FOREIGN KEY(f
参考事件(id_event)MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION

现在我在Netbenas的帮助下完成了地图的绘制工作,并给了我下面的代码(我为三张表做了映射,但是在向我展示问题出现在 Photo类中。

  @Entity 
@Table(name =photo)
@XmlRootElement
@NamedQuery(
@NamedQuery(name =photo.findAll,query =SELECT p FROM Photo p),
@NamedQuery(name =photo.findByFidPhoto ,query =SELECT p FROM Photo p WHERE p.fidphoto =:fidphoto),
@NamedQuery(name =photo.findByIdPhoto,query =选择p从照片p WHERE p.idphoto =:idphoto )})
public class Photo类实现Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(可选= false)
@Column(name =id_photo)
私人整数idPhoto ;
@Column(name =path)
private Recurso fidPath;
@JoinColumn(name =fid_module,referencedColumnName =id_activity)
@ManyToOne(可选= false,fetch = FetchType.LAZY)
私人SliderWebHome fidModule;
@JoinColumn(name =fid_module,referencedColumnName =id_event)
@ManyToOne(可选= false,fetch = FetchType.LAZY)
private Publicacion fidModule1;
$ b $ public ModuloRecurso(){
}
.......
}

我使用JPA进行持久化(但是执行mvn clean install和 mvn jboss-as:deploy 几个方法会导致hibernate依赖关系)任何人都可以告诉我什么是我的错误还是可以解决这个问题。谢谢。

解决方案

正如另一个答案中指出的,您的Java代码为两个字段指定了相同的联合列名称,如果这个Java代码是由netbeans映射工具生成的,就像从你的笔记中看到的一样



blockquote>

现在我在Netbenas的帮助下完成了映射,并给了我下面的代码...

糟糕的Java映射可能是由于你的SQL中的约束组合不好造成的。



你在定义照片 b
$ b $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ b 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_module 引用活动的外键以及引用事件的外键,无法工作。



如果您需要外键照片到这两个表格中,您需要使用两个不同的列。


I am beginner in handling JPA with maven and JBOSS, with Restful to make my application I have the following problem arose me doing DEPLOY

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 \") "}}

Not that step, check all posles solutions, but did not find anything, can someone help me??

Thanks in advance

Below I show the SQL code in postgres that I have and I did the mapping.

I have three tables (activity, event and photo) where one of them (photo) refers to the other two (activity and event) but in a single column (photo.fid_module)

SQL Code (enginer database-->Postgresql):

CREATE TABLE activity (
  id_activity integer not null,
  name character varying(150),
  description text,
  CONSTRAINT id_activity_pk PRIMARY KEY (id_activity)
)

CREATE TABLE event (
  id_event integer not null,
  name character varying(150),
  description text,
  date timestamp without time zone,
  CONSTRAINT id_event_pk PRIMARY KEY (id_event)
)

CREATE TABLE photo(
  id_photo integer not null,
  path character varying(150),
  fid_module integer not null,
  CONSTRAINT id_photo_pk PRIMARY KEY (id_photo),
  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
)

Now the mapping I did with the help of Netbenas and gave me the following code (I did the mapping for the three tables, but in presenting me the problem is in the class Photo.java).

@Entity
@Table(name = "photo")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "photo.findAll", query = "SELECT p FROM Photo p"),
    @NamedQuery(name = "photo.findByFidPhoto", query = "SELECT p FROM Photo p WHERE p.fidphoto = :fidphoto"),
    @NamedQuery(name = "photo.findByIdPhoto", query = "SELECT p FROM Photo p WHERE p.idphoto = :idphoto")})
public class Photo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_photo")
    private Integer idPhoto;
    @Column(name = "path")
    private Recurso fidPath;
    @JoinColumn(name = "fid_module", referencedColumnName = "id_activity")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private SliderWebHome fidModule;
    @JoinColumn(name = "fid_module", referencedColumnName = "id_event")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Publicacion fidModule1;

    public ModuloRecurso() {
    }
    .......
}

I am using JPA for persistence (but do mvn clean install and mvn jboss-as: deploy several pulls me hibernate dependencies) could anyone tell me what is my mistake or could solve this problem. Thank you.

解决方案

As noted in another answer, your Java code specifies the same join-column name for two fields, which can't work.

If this Java code is generated by a netbeans mapping tool, as it seems from your note

the bad Java mapping is probably caused by a bad combination of constraints in your SQL.

You have in your definition of the photo table:

  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

which attempts to make the column fid_module a foreign key referencing activity and also a foreign key referencing event, which can't work.

If you need foreign keys from photo to both of those tables, you'll need to use two different columns.

这篇关于引起:org.hibernate.MappingException:实体映射中的重复列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 08:33
查看更多