Problem mit

Status
Nicht offen für weitere Antworten.
P

Peter Müller

Gast
Ich möchte folgendes Realisieren:

Eine Dynamische Maske soll mir eine sprachspezifische Ausgabe anzeigen. Hierzu habe ich drei Tabellen

Language = Eigenschaften für die aktuelle gewählte Sprache
int id (Primary Key)
String nam

Lookup = Die einzelnen Items einer Combobox - List
int id (Primary Key)
String Ffieldname
String Value

LookupData
int lookup_ID
int language_ID
String name // Itemtext

D.h. wenn z.B. der Benutzer Deutsch auswählt soll gibt es eine Eindeutige Identifikation welche Items für die Combobox angezeigt werden sollen.

Code:
package  lookuplanganguemodel.persitence;

import java.io.Serializable;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;

public class LookupDataID implements Serializable {
	private static final long serialVersionUID = 1L;
	
        int lookup_id;
        int language_id;
	
	public int getLookupID() {
		return this.lookup_id;
	}

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

	public int geLanguageID() {
		return this.language_id;
	}

	public void setLanguageID(int id) {
		this.language_id = id;
	}
}
Lookup-Data ID

Code:
package  lookuplanganguemodel.persitence;

import java.io.Serializable;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name = "lookup_data")
public class LookupData implements Serializable {
	private static final long serialVersionUID = 1L;

	
	/**
	 * @directed true
	 */
	
	[color=red]@EmbeddedId[/color]         // <<-----------    FEHLER ???????????????????????????????
	private LookupDataID id;
	private String       name;

	public LookupData() {
		super();
	}

	public LookupDataID getId() {
		return id;
	}

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

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

Code:
package  lookuplanganguemodel.persitence;

import java.io.Serializable;
import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;


@Entity
public class Lookup implements Serializable {
	private static final long serialVersionUID = 1L;

	@Column(name="id")
	private int       id;
	@Column(name="name")

	public Lookup() {
		super();
	}

	public int getId() {
		return this.id;
	}

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

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
Lookup Entity - Bean


Code:
package  lookuplanganguemodel.persitence;

import java.io.Serializable;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Language implements Serializable {
	@Id
	private int    id;
	private String name;

	private static final long serialVersionUID = 1L;

	public Language() {
		super();
	}

	public int getId() {
		return this.id;
	}

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

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}
}


Code:
package  lookuplanganguetest.bean;

import  lookuplanganguemodel.persitence.*;
import  lookuplangangueutils.db.SessionFactory;

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

public class TestLookup {
	public void save() {
	       LookupDataID   id = new LookupDataID(1, 1);
	       LookupData   data = new LookupData();
		   
	       data.setId(id);

	       Session     session  = SessionFactory.getSessionFactory().openSession();
	       Transaction tx       = session.beginTransaction();
	       session.save(data);
	       tx.commit();
	       session.close();
	}
}
Testfunktion zum testen des speicherns in eine MySQL - Datenbank

Diese habe ich mir Anhand von
Sebastian Hennebrüder "Hibernate - Das Praxisbuch für Entwickler", Galileo Computing, S. 184

erstellt, wenn ich es aber kompiliere erhalte ich an der oben gekennzeichneten Stelle einen Fehler mit der Fehlermeldung:

Exception in thread "main" org.hibernate.MappingException: Unknown entity: lookuplanganguemodel.persitence.LookupData
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:547)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1331)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:96)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:537)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:525)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:521)
at lookuplanganguetest.bean.TestLookup.save(TestLookup.java:28)
at lookuplanganguetest.bean.Test.main(Test.java:15)

Was mache ich hier Falsch?
 
G

Guest

Gast
Code:
@Embeddable
public class LookupDataID {
...
}
 
P

Peter Müller

Gast
Anonymous hat gesagt.:
Code:
@Embeddable
public class LookupDataID {
...
}

Wenn ich vor LookupDataID das Embeddable schreibe erhalte ich die Fehlermeldung in etwas "Disallowed at this place". Wie sieht es aus darf ich innerhalb dieser Klasse auch die Annotation @Column verwenden?
 
G

Guest

Gast
Peter Müller hat gesagt.:
Wenn ich vor LookupDataID das Embeddable schreibe erhalte ich die Fehlermeldung in etwas "Disallowed at this place". Wie sieht es aus darf ich innerhalb dieser Klasse auch die Annotation @Column verwenden?
Du sollst es auch nicht vor das Id-Feld schreiben, sondern an der Klasse LookupDataID.
Code:
@Embeddable 
public class LookupDataID { 
... 
}

public class LookupData {
   @EmbeddedId
   private LookupDataID id;
   ...
}
 
P

Peter Müller

Gast
Hi,

genauso sieht es aus, mit den einzigen Unterschieden

1. Vor der Klasse "LookupData" steht noch die @Entity und @Table(name="lookup_data")
2. LookupData und LookupDataID sind "natürlich" in zwei unterschiedlichen Dateien (aber gleiches Verzeichnis)
3. Beide Klassen sind Serializabled
4. Vor lookup_id und language_id der Klasse LookupDataID befindet sich jeweils eine @Column angabe.

Ich versteh es einfach nicht, wo das Problem liegt?
 
G

Guest

Gast
Wie sieht deine persistence.xml Datei aus? Benennst du die Klassen einzeln oder lässt du Hibernate danach suchen?
 
G

Guest

Gast
Stimmte hatte vergessen dieses im Descriptor zu mappen. Dank für die Hilfe.
 
G

Guest

Gast
Füge einfach die folgende Zeile in die persistence.xml
Code:
<property name="hibernate.archive.autodetection" value="class" />
ein und entferne alle class-Zeilen und das exclude-unlisted-classes
Code:
<class>was.auch.immer.Klasse1</class>
<class>was.auch.immer.Klasse2</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
 
P

Peter Müller

Gast
Anonymous hat gesagt.:
Füge einfach die folgende Zeile in die persistence.xml
Code:
<property name="hibernate.archive.autodetection" value="class" />
ein und entferne alle class-Zeilen und das exclude-unlisted-classes
Code:
<class>was.auch.immer.Klasse1</class>
<class>was.auch.immer.Klasse2</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>

Wie bereits beschrieben hatte ich vergessen, dieses in der hibernate.cfg.xml zu mappen. Wieso also Persistence.xml? Es handelt sich um Hibernate.
 

ps

Bekanntes Mitglied
Hibernate implementiert den JPA Standard.

Da du keine hibernatespezifischen Features benutzt macht es eigentlich Sinn die persistence.xml zu nutzen anstatt hibernate.cfg.xml
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Problem beim initialisieren des Caches Data Tier 0
S JPA Problem mit Cascading Data Tier 1
M Eclipse 4 RCP Hibernate Problem Data Tier 3
C JPA FetchType.LAZY, Relation @OneToMany und Problem mit dem update Data Tier 1
K Problem mit EJBs und Transaktionen Data Tier 0
G JPA: Entity Klasse @JoinColumns Problem Data Tier 2
M JPA Problem: java.sql.SQLSyntaxErrorException: Data Tier 7
H Hibernate Problem mit Lazy Loading bei @OneToMany Collections Data Tier 5
M MySql und JPA-Timestamp Problem Data Tier 8
J Hibernate Problem bei Master-Detail-Tabellen Data Tier 5
A JPA - ManyToMany Problem - keine Unique Mehrfachzuweisungen Data Tier 4
M Problem beim Laden von Objekten, die von anderen Applikationen in eine DB eingefügt wurden Data Tier 5
M Problem mit @Temporal Mapping und SQL Server Data Tier 3
P JPA - HashMap mit Many-to-Many Relation Problem Data Tier 4
B Problem mit @ManyToMany und CascadeType.ALL Data Tier 3
Blackskyliner [JPA][Anfänger] Problem mit Wertzuweisung aus Verbundtabelle Data Tier 2
B Problem mit org.hibernate.LazyInitializationException Data Tier 11
B DatenquellenUpdater extends Thread - Problem mit PermGenSpace Data Tier 5
S Problem beim Insert mit Hibernate Data Tier 9
Y [openJPA] Problem mit Transaktion? Data Tier 2
A @SecondaryTable Problem Data Tier 9
N Problem beim session.flush(); Data Tier 17
Y Postgres und JPA - Primärschlüssel Problem Data Tier 3
P SQL PRoblem Hibernate? Data Tier 8
Y EJB Problem mit Transaktionen Data Tier 7
M Transaction / Session Problem Data Tier 4
G JPA 2.0 Query Problem Data Tier 3
P CORBA Problem bei EJB 3.0 Anwendung in Glassfish v3 Data Tier 7
F Problem mit Hibernate Schema Update Data Tier 2
S Lazy loading Problem Data Tier 2
M Insert-Problem mit JPA/Hibernate Data Tier 4
megachucky JPA - Problem mit Persistence Unit / Context Data Tier 1
H Hibernate Problem Data Tier 4
D Performance Problem mit Prepared Statement Data Tier 6
T Problem mit openJPA Data Tier 7
GilbertGrape Cascade Problem (Hibernate) Data Tier 3
C JPA Problem mit attributeOverride und mehrspaltigem PK Data Tier 2
B select "neu" statement Problem (jpql) Data Tier 8
boxi Hibernate Lazy Loading Problem Data Tier 2
M Problem mit Hibernate und SLF4J - NoSuchMethodException Data Tier 3
G Connection Problem - WAS 6.1, Hibernate, OS Authentication Data Tier 1
K Hibernate update-Problem Data Tier 36
J hibernate problem Data Tier 14
N Hibernate - Problem mit Update/Insert Data Tier 4
B Problem mit @PersistenceContext Data Tier 4
G Problem with mapped of the tables at one to one relationship Data Tier 8

Ähnliche Java Themen


Oben