These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: EntityManager / MappingException
PostPosted: Thu Apr 08, 2010 10:27 am 
Newbie

Joined: Thu Apr 08, 2010 8:47 am
Posts: 18
Hallo,
ich fange gerade an mich mit Hibernate einzuarbeiten, also bitte nicht schlagen ;)
Ich habe recht viel nach diesem Problem gegoogelt, konnte aber leider dazu nichts finden :(

Ich bekomme folgende Fehlermeldung:
Code:
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: HH-Manager] Unable to build EntityManagerFactory
   at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:892)
   at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
   at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
   at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
   at CityTest.main(CityTest.java:19)
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: CITY, for columns: [org.hibernate.mapping.Column(STREETS)]
   at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:290)
   at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:274)
   at org.hibernate.mapping.Property.isValid(Property.java:217)
   at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464)
   at org.hibernate.mapping.RootClass.validate(RootClass.java:236)
   at org.hibernate.cfg.Configuration.validate(Configuration.java:1193)
   at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1378)
   at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
   at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:883)
   ... 4 more


Meine hibernate.cfg.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
      
<hibernate-configuration>
   
    <session-factory name="MySQL-Session">
   
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">MK191183</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/Test</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.hbm2ddl.auto">create</property>
       
        <mapping class="de.uni_luebeck.hh.tables.address.City"/>
        <mapping class="de.uni_luebeck.hh.tables.address.Street"/>
       
    </session-factory>
</hibernate-configuration>


Meine persistence.xml im META-INF Ordner:
Code:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
   <persistence-unit name="HH-Manager">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <class>de.uni_luebeck.hh.tables.address.Street</class>
      <class>de.uni_luebeck.hh.tables.address.City</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
      </properties>
   </persistence-unit>
</persistence>


Meine Street.java:
Code:
package de.uni_luebeck.hh.tables.address;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "STREET")
public class Street implements Serializable {

   private static final long serialVersionUID = -4358644913473718120L;

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "ID")
   private int id;
   
   @Column(name = "STREETNAME")
   private String streetName;
   
   @Column(name = "STREETNUMBER")
   private int streetNumber;
   
   @Column(name = "STREETNUMBERADD")
   private char streetNumberAddition;
   
   @Column(name = "ZIP")
   private int zip;

   public Street() {
      super();
   }

   public Street(   String streetName, int streetNumber,
               char streetNumberAddition, int zip) {
      super();
      this.streetName = streetName;
      this.streetNumber = streetNumber;
      this.streetNumberAddition = streetNumberAddition;
      this.zip = zip;
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   public String getStreetName() {
      return streetName;
   }

   public void setStreetName(String streetName) {
      this.streetName = streetName;
   }

   public int getStreetNumber() {
      return streetNumber;
   }

   public void setStreetNumber(int streetNumber) {
      this.streetNumber = streetNumber;
   }

   public char getStreetNumberAddition() {
      return streetNumberAddition;
   }

   public void setStreetNumberAddition(char streetNumberAddition) {
      this.streetNumberAddition = streetNumberAddition;
   }

   public int getZip() {
      return zip;
   }

   public void setZip(int zip) {
      this.zip = zip;
   }   
   
}


Meine City.java:
Code:
package de.uni_luebeck.hh.tables.address;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "CITY")
public class City implements Serializable {

   private static final long serialVersionUID = 6321541332453365559L;

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "ID")
   private int id;
   
   @Column(name = "CITY")
   private String city;
   
   @Column(name = "STREETS")
   private Set<Street> streets = new HashSet<Street>();

   public City() {
      super();
   }
   
   public City(String city, Set<Street> streets) {
      super();
      this.city = city;
      this.streets = streets;
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   public String getCity() {
      return city;
   }

   public void setCity(String city) {
      this.city = city;
   }

   @OneToMany(targetEntity = Street.class, fetch = FetchType.EAGER)
   public Set<Street> getStreets() {
      return streets;
   }

   public void setStreets(Set<Street> streets) {
      this.streets = streets;
   }
      
}


Und die Klasse mit der Main-Methode:
Code:
import java.text.ParseException;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import de.uni_luebeck.hh.tables.address.City;


public class CityTest{
   
   private static City getCity1(){
      return new City("Hamburg",StreetTest.getStreets());
   }
   
   public static void main(String[] args) throws ParseException{
      EntityManagerFactory emf = Persistence.createEntityManagerFactory("HH-Manager");
      EntityManager em = emf.createEntityManager();
      City city = getCity1();
      
      em.persist(city);
      em.close();
      emf.close();
      System.out.println("FERTIG!");
   }
   
}


Wird eigentlich die persistence.xml Datei wirklich benötigt oder lässt sich dies über @nnotationen realisieren?

Wäre äußerst dankbar über jede Hilfe!!!


Top
 Profile  
 
 Post subject: Re: EntityManager / MappingException
PostPosted: Sun Apr 11, 2010 1:09 pm 
Newbie

Joined: Thu Apr 08, 2010 8:47 am
Posts: 18
Kann mir da keiner helfen? :(


Top
 Profile  
 
 Post subject: Re: EntityManager / MappingException
PostPosted: Thu Apr 22, 2010 9:04 am 
Newbie

Joined: Wed Apr 21, 2010 8:41 am
Posts: 12
Quote:
Wird eigentlich die persistence.xml Datei wirklich benötigt oder lässt sich dies über @nnotationen realisieren?


In deinem Fall wird sie aufjedenfall benötigt da in ihr der Dialect festgelegt wird, allerdings brauchst du nicht alle Entities aufzulisten da diese je bereits mit @Entity annotiert sind.


Top
 Profile  
 
 Post subject: Re: EntityManager / MappingException
PostPosted: Thu Apr 22, 2010 9:10 am 
Newbie

Joined: Wed Apr 21, 2010 8:41 am
Posts: 12
Zu deinem eigentlichen Problem

Quote:
@Column(name = "STREETS")
private Set<Street> streets = new HashSet<Street>();


Von welchem Typ ist denn die Spalte Streets in deiner DB?
Ich denke dir fehlt hier eine OneToMany oder OneToOne Annotation...zum Beispiel:

Code:
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "city", cascade = CascadeType.PERSIST, orphanRemoval = true)
    private Set<Street> streets = new HashSet<Street>();


Grüße,
Jonas


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.