Hibernate Problem

Status
Nicht offen für weitere Antworten.
F

FelixVogt

Gast
Hallo,

Ich hab hier in einem Studienprojekt ein Problem mit der Implementierung des Persistence Layers in Hibernate.

Unser Problem rührt daher, dass wenn wir ein Objekt ändern wollen, und diese Änderungen speichern wollen, dieses Bereits in der Datenbank vorhanden ist, und wir eine Exception von Hibernate erhalten:

Duplicate entry 'rtest' for key 2
ERROR - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.ErrorCodeConverter.convert,,,,,

Wir haben uns mit der Implementierung an ein Tutorial gehalten (event Tutorial ... kennen vielleicht einige
Wir haben folgende Klassen:

Klasse Event:
Code:
import java.util.Date;

public class Event {
    private String title;
    private String test;
    private Date date;
    private Long id;

    public void setTest(String ctest){
    	test = ctest;
    }
    
    public String getTest(){
    	return test;
    }
    
    private Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
[/code]

Klasse EventManager:
Code:
import java.util.Date;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class EventManager {

	
	private static Event theEventzu;
	
	public static void main(String[] args) throws java.text.ParseException {
		EventManager instance = new EventManager();
		String title = "rtest";
		Date theDate = new Date();

		List events = instance.listEvents();
			
		theEventzu = (Event) events.get(0);
			
		instance.store(title, theDate);
			
			
		for (int i = 0; i<events.size(); i++) {
			Event theEvent = (Event) events.get(i);
			System.out.println("Event " + theEvent.getTitle() + " Time: " + theEvent.getTest());
		}
		HibernateUtil.closeSession();
	}
	
	private List listEvents() {
		try {
			Session session = HibernateUtil.currentSession();
			Transaction tx = session.beginTransaction();
						
			List result = session.createQuery("from Event").list();			
            
			tx.commit();
			
			return result;
		} catch (HibernateException e) {
			throw new RuntimeException(e.getMessage());
		}
	}		
	
	private void store(String title, Date theDate) {		
		try {
			Session session = HibernateUtil.currentSession();
			Transaction tx = session.beginTransaction();
			
			Event theEvent = new Event();
			theEvent.setTitle(title);
			theEvent.setTest("das ist ein Test");

			session.saveOrUpdate(theEvent);            
            
			tx.commit();
			
		} catch (HibernateException e) {
			e.printStackTrace();
		}
	}

Klasse HibernateUtil:
Code:
import org.hibernate.*;
import org.hibernate.cfg.*;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static final ThreadLocal session = new ThreadLocal();

    public static Session currentSession() throws HibernateException {
        Session s = (Session) session.get();
        // Open a new Session, if this Thread has none yet
        if (s == null) {
            s = sessionFactory.openSession();
            session.set(s);
        }
        return s;
    }

    public static void closeSession() throws HibernateException {
        Session s = (Session) session.get();
        session.set(null);
        if (s != null)
            s.close();
    }
}

Mapping Datei:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

        <class name="Event" table="EVENTS">
                <id name="id" column="uid" type="long">
                        <generator class="increment"/>
                </id>
                <property name="title" column="eventtitle" unique="true"/>
                <property name="test" column="test"/>
                
        </class>

</hibernate-mapping>


Es wäre total Klasse, wenn mir da jemand weiterhelfen könnte, da ich den Kram bis nächste Woche fertig haben muss.

Vielen Dank schonmal im vorraus.

Gruss
Felix
 
F

FelixVogt

Gast
Hallo,

Ich find es echt schade, wenn die Leute immer kategorisch nur auf die Forumsuche verweisen... Ich hab sowohl bei Google als auch in Newsgroups gesucht wie ein blöder. Da werd ich wohl kaum einen Thread erstellen, wenn ich nicht vorher die Suche benutzt habe. Bin alle Artikel im Forum die was mit Hibernate zu tun hatten durchgegangen.

Die Tutorials die ich gefunden habe (wovon es ja auch nicht gerade wenig gibt) sind auf diese Problematik leider nicht eingegangen, da dort immer einfach nur ein Objekt der zu persitierenden Klasse erstellt wird, und anschliessend mit save() gespeichert wird. Das hilft mir nicht wirklich weiter.

Vielleicht kann mir ja doch noch jemand weiterhelfen.


Mfg
Felix Vogt
 

kama

Top Contributor
Hallo,

FelixVogt hat gesagt.:
Ich find es echt schade, wenn die Leute immer kategorisch nur auf die Forumsuche verweisen...
Du solltest den Link mal genauer betrachten....Auf die Forumssuche habe ich nicht verwiesen, sondern auf das Hibernate Forum!

MfG
Karl Heinz Marbaise
 
S

SlaterB

Gast
wo steht denn in dem Code was von ändern?
da wird doch ein neues Objekt mit einem anscheinend schon vergebenen Title erzeugt,
das ist verboten,

möchtest du dass Hibernate diesen save-Befehl automatisch in eine Änderung des vorhandenen Eintrags umwandelt?
das wäre ja abenteuerlich
 
F

FelixVogt

Gast
kama hat gesagt.:
Du solltest den Link mal genauer betrachten....Auf die Forumssuche habe ich nicht verwiesen, sondern auf das Hibernate Forum!

Muss mich entschuldigen ! Mein Fehler. Hab in meinem Übereifer überlesen, dass das ein verweis auf das hibernate Forum ist.


SlaterB hat gesagt.:
wo steht denn in dem Code was von ändern?
da wird doch ein neues Objekt mit einem anscheinend schon vergebenen Title erzeugt,
das ist verboten,

möchtest du dass Hibernate diesen save-Befehl automatisch in eine Änderung des vorhandenen Eintrags umwandelt?
das wäre ja abenteuerlich

Hab leider noch nicht wirklich durchdrungen, was du damit meinst.

Ich versuche mal zu skizieren, was in unserer Anwendung so geschehen soll:
-User erstellt in einer GUI ein neuen Eintrag in einer Liste (z.B. einen Event)
-Dieses Objekt will ich nun mittels Hibernate in der Datenbank speichern bzw. bestehnende Objekte ändern können.

Das Problem ist, wenn ich über session.load(Event.class, id) in der Datenbank schaue, gibt es dieses objekt nicht.
Scheint fast so zu sein, als ob diese geschichte nicht in der selben hibernate session ausgeführt wird.

Gruss
Felix
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
C Hibernate Property-Problem Datenbankprogrammierung 5
c_sidi90 Hibernate Problem Table doesnt excist Datenbankprogrammierung 8
I Hibernate: Composite Foreign Key Problem Datenbankprogrammierung 14
K Hibernate + MySQL Problem... Datenbankprogrammierung 2
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
M Problem mit Hibernate und Access Datenbankprogrammierung 9
E Hibernate Problem bei bidirektionaler 1:n Verbindung Datenbankprogrammierung 2
G Hibernate Instrumentation Problem Datenbankprogrammierung 5
B Hibernate Mapping Problem Datenbankprogrammierung 3
ARadauer Hibernate und HSQL DB Problem Datenbankprogrammierung 4
K org.hibernate.MappingException Problem Datenbankprogrammierung 2
F Hibernate Mapping problem Datenbankprogrammierung 2
G Problem mit neuer Hibernate Library und SLF4J Logging Datenbankprogrammierung 5
G [Hibernate] Problem mit LEFT JOIN Datenbankprogrammierung 7
GilbertGrape hibernate: Problem mit OneToMany Datenbankprogrammierung 4
F Hibernate Problem Datenbankprogrammierung 4
Y Hibernate - Problem bei Mapping Datenbankprogrammierung 7
Y Hibernate - Problem bei save Datenbankprogrammierung 22
M Problem mit Hibernate und JDBC Datenbankprogrammierung 2
N Hibernate & hsqldb: Problem bei db-update Datenbankprogrammierung 7
W Hibernate Update Problem Datenbankprogrammierung 3
O Update-Problem mit Hibernate-Framework Datenbankprogrammierung 5
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
T org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ..., could not initialize proxy - no Session Datenbankprogrammierung 5
T Realisierungsvorschläge Hibernate SQL Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
OnDemand Hibernate Realationen Datenbankprogrammierung 7
OnDemand Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
OnDemand Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben