failed.org.hibernate.AnnotationException: mappedBy reference

Hi,

i am German student and new to hibernate. I established a mn conetction between to entities using hbm.xml mapping files. now I try to create the same connection applying annotations. unfortunately it does not work and I do not now why. First my error message followed by my classes and xml's:

Initial SessionFactory creation failed.org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: domain.Termin.person in domain.Person.termine

Exception in thread "main" java.lang.ExceptionInInitializerError

at services.HibernateUtil.sessionFactory(HibernateUtil.java:39)

at services.HibernateUtil.getSessionFactory(HibernateUtil.java:20)

at test.Test.main(Test.java:20)

Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: domain.Termin.person in domain.Person.termine

at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:552)

at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:517)

at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)

at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)

at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:316)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)

at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)

at services.HibernateUtil.sessionFactory(HibernateUtil.java:36)

... 2 more

package domain;

import java.util.LinkedList;

import java.util.List;

import domain.Termin;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.ManyToMany;

import javax.persistence.Table;

@Entity

@Table(name ="PERSON")

publicclass Person{

privatelong id;

private String vorname;

private String nachname;

private List<Termin> termine=new LinkedList<Termin>();

public Person(){

}

@Id @GeneratedValue(strategy=GenerationType.AUTO)

publiclong getId(){

return id;

}

publicvoid setId(long id){

this.id = id;

}

public String getNachname(){

return nachname;

}

publicvoid setNachname(String nachname){

this.nachname = nachname;

}

public String getVorname(){

return vorname;

}

publicvoid setVorname(String vorname){

this.vorname = vorname;

}

publicvoid addTermin(Termin termin){

termine.add(termin);

}

@ManyToMany(mappedBy="person")

public List<Termin> getTermine(){

return termine;

}

publicvoid setTermine(List<Termin> termine){

this.termine = termine;

}

}

package domain;

import java.util.ArrayList;

import java.util.List;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.ManyToMany;

import javax.persistence.Table;

@Entity

@Table(name ="TERMIN")

publicclass Termin{

privatelong id;

private String titel;

private Person eigentuemer;

private List<Person> teilnehmer=new ArrayList<Person>();

publicvoid addTeilnehmer(Person person){

teilnehmer.add(person);

}

@ManyToMany

public List<Person> getTeilnehmer(){

return teilnehmer;

}

publicvoid setTeilnehmer(List<Person> teilnehmer){

this.teilnehmer = teilnehmer;

}

public Termin(){

}

@Id @GeneratedValue(strategy=GenerationType.AUTO)

publiclong getId(){

return id;

}

publicvoid setId(long id){

this.id = id;

}

public String getTitel(){

return titel;

}

publicvoid setTitel(String titel){

this.titel = titel;

}

public Person getEigentuemer(){

return eigentuemer;

}

publicvoid setEigentuemer(Person eigentuemer){

this.eigentuemer = eigentuemer;

}

}

package test;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import org.hibernate.tool.hbm2ddl.SchemaExport;

import services.HibernateUtil;

import domain.Person;

import domain.Termin;

publicclass Test{

publicstaticvoid main(String[] args){

Session session =null;

HibernateUtil.setRecreateDB(true);

session = HibernateUtil.getSessionFactory().getCurrentSession();

/*Person person1 =new Person();

person1.setNachname("P1");

Transaction transaction = session.beginTransaction();

session.save(person1);

transaction.commit();

Person person2 =new Person();

person2.setNachname("P2");

session = HibernateUtil.getSessionFactory().getCurrentSession();

transaction = session.beginTransaction();

session.save(person2);

transaction.commit();

Termin termin1 =new Termin();

termin1.setTitel("T1");

termin1.setEigentuemer(person1);

termin1.addTeilnehmer(person1);

termin1.addTeilnehmer(person2);

session = HibernateUtil.getSessionFactory().getCurrentSession();

transaction = session.beginTransaction();

session.save(termin1);

transaction.commit();

Termin termin2 =new Termin();

termin2.setTitel("t2");

termin2.setEigentuemer(person1);

termin2.addTeilnehmer(person1);

termin2.addTeilnehmer(person2);

transaction = session.beginTransaction();

session.save(termin2);

transaction.commit();

session.close();

*/

}

}

package services;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

import domain.Person;

import domain.Termin;

publicclass HibernateUtil{

privatestaticboolean recreateDB =false;

publicstaticvoid setRecreateDB(boolean recreateDB){

HibernateUtil.recreateDB = recreateDB;

}

publicstatic SessionFactory getSessionFactory(){

if (sessionFactory ==null){

sessionFactory = sessionFactory("hibernate.cfg.xml");

}

return sessionFactory;

}

privatestatic SessionFactory sessionFactory =null;

privatestatic SessionFactory sessionFactory(String configurationFileName){

try{

AnnotationConfiguration annotationConfiguration =

new AnnotationConfiguration()

.addAnnotatedClass(Person.class)

.addAnnotatedClass(Termin.class);

if (recreateDB) annotationConfiguration.setProperty("hibernate.hbm2ddl.auto","create");

annotationConfiguration.configure();

return annotationConfiguration.buildSessionFactory();

}catch (Throwable ex){

System.err.println("Initial SessionFactory creation failed." + ex);

thrownew ExceptionInInitializerError(ex);

}

}

}

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-configuration

PUBLIC"-//Hibernate/Hibernate Configuration DTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory >

<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>

<property name="hibernate.connection.password">application</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>

<property name="hibernate.connection.username">application</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="current_session_context_class">thread</property>

<property name="hibernate.show_sql">true</property>

</session-factory>

</hibernate-configuration>

[14593 byte] By [FT77a] at [2007-11-27 11:32:51]
# 1

This is the wrong forum for Hibernate questions. This forum is for discussing JSF. I suggest you locate one of the many forums devoted to Hibernate.

RaymondDeCampoa at 2007-7-29 16:47:49 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...