2013-05-07 1 views
0

En utilisant Hibernate Annotations ne construire ma base de données que je reçois une erreur:Mise en veille prolongée AnnotationException

Exception in thread "main" org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: de.hof.university.spj.entities.CrewMember.TBL_SPJ_CREW_MOVIE in de.hof.university.spj.entities.CrewMovie.crewMember 
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:708) 
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:668) 
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66) 
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1593) 
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1350) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737) 
at de.hof.university.spj.model.DatabaseBuilder.configureSessionFactory(DatabaseBuilder.java:40) 
at de.hof.university.spj.model.DatabaseBuilder.<init>(DatabaseBuilder.java:28) 
at de.hof.university.spj.main.Main.main(Main.java:46) 

Je ne fait sais ce que je fait de mal et de trouver une solution ne semble pas être facile dans cette jungle des problèmes de mise en veille prolongée qui existe là-bas ....

Mes classes:

membre d'équipage

@Entity 
@Table(name="TBL_SPJ_CREWMEMBER") 
public class CrewMember implements Serializable { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
/** 
* 
*/ 
@Id 
@GeneratedValue(strategy=IDENTITY) 
@Column(name="CREWMEMBER_ID", unique=true) 
private int crewMemberId = 0; 
/** 
* 
*/ 
@Column(name="CREWMEMBER_PEOPLE_ID") 
private int personID = 0; 
/** 
* 
*/ 
@Column(name="CREWMEMBER_DEPARTMENT") 
private String department = ""; 
/** 
* 
*/ 
@Column(name="CREWMEMBER_JOB") 
private String job = ""; 

/** 
* 
*/ 
public CrewMember() {} 

/** 
* @return the crewMemberId 
*/ 
public int getCrewMemberId() { 
    return crewMemberId; 
} 
/** 
* @param crewMemberId the crewMemberId to set 
*/ 
public void setCrewMemberId(int crewMemberId) { 
    this.crewMemberId = crewMemberId; 
} 
/** 
* @return the person 
*/ 
public int getPersonID() { 
    return personID; 
} 
/** 
* @param person the person to set 
*/ 
public void setPersonID(int personID) { 
    this.personID = personID; 
} 
/** 
* @return the departement 
*/ 
public String getDepartment() { 
    return department; 
} 
/** 
* @param departement the department to set 
*/ 
public void setDepartment(String department) { 
    this.department = department; 
} 
/** 
* @return the job 
*/ 
public String getJob() { 
    return job; 
} 
/** 
* @param job the job to set 
*/ 
public void setJob(String job) { 
    this.job = job; 
} 
/** 
* 
*/ 
public String toString() { 
    return personID + "-" + department + "-" + job; 
} 
} 

CrewMovie:

@Entity 
@Table(name="TBL_SPJ_CREW_MOVIE") 
public class CrewMovie implements Serializable { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
/** 
* 
*/ 
@Id 
@GeneratedValue(strategy=IDENTITY) 
@Column(name="CREW_MOVIE_ID", unique=true) 
private int crewId = 0; 
/** 
* 
*/ 
@OneToMany(fetch=FetchType.LAZY, mappedBy="TBL_SPJ_CREW_MOVIE") 
private List<CrewMember> crewMember = null; 

/** 
* 
*/ 
public CrewMovie() {} 

/** 
* @return the crewId 
*/ 
public int getCrewId() { 
    return crewId; 
} 
/** 
* @param crewId the crewId to set 
*/ 
public void setCrewId(int crewId) { 
    this.crewId = crewId; 
} 
/** 
* @return the crewMember 
*/ 
public List<CrewMember> getCrewMember() { 
    return crewMember; 
} 
/** 
* @param crewMember the crewMember to set 
*/ 
public void setCrewMember(List<CrewMember> crewMember) { 
    this.crewMember = crewMember; 
} 
/** 
* 
*/ 
public String toString() { 
    String returning = "Crew: "; 

    if(crewMember != null && crewMember.size() > 0) { 
     for(CrewMember member: crewMember) { 
      returning += member.toString(); 
      returning += ", "; 
     } 
    } 

    returning += "\n"; 

    return returning; 
} 
} 
+0

Quelle est votre configuration Hibernate? Ça sent comme une configuration brisée où les classes d'entités sont manquantes. – Markus

+0

J'ai mis la cartographie de toutes mes classes. user1882812

+0

Mais cette erreur pointe vers une propriété, et cela arrive généralement pour 2 raisons: une propriété ne correspond pas à sa colonne ou une propriété utilisée dans une requête n'existe pas (mal typée). – Ziul

Répondre

0

On dirait que vous voulez une cartographie unidirectionnels où vous aviez seulement des annotations sur la CrewMovie. Une colonne devra être ajoutée à la table TBL_SPJ_CREWMEMBER pour supporter ceci. Dans mon exemple, je suis ajouté la colonne J_CREW_MOVIE_ID.

@Entity 
@Table(name="TBL_SPJ_CREW_MOVIE") 
public class CrewMovie implements Serializable { 

    @Id 
    @GeneratedValue(strategy=IDENTITY) 
    @Column(name="CREW_MOVIE_ID", unique=true) 
    private int crewId = 0; 

    @OneToMany 
    @JoinColumn(name="J_CREW_MOVIE_ID", referencedColumnName="CREW_MOVIE_ID") 
    private List<CrewMember> crewMember = null; 
} 
+0

C'est la solution. Je te remercie – user1882812