JPA Problem mit attributeOverride und mehrspaltigem PK

Status
Nicht offen für weitere Antworten.
C

cg

Gast
Hallo,


Ich habe eine Menge Tabellen im folgedem Format

Code:
pk1 | pk2 | pk3 | yyy

alle Felder sind numerisch und der primary key besteht aus pk1, pk2 und pk3 .. der einzige unterschied zwischen den Tabellen ist der unterschiedliche spaltenname von pk3

Dieses Tabellenschema ist fix und kann nicht geändert werden

Diese Tabellen möchte ich jetzt mit den JPA mappen (oder Hibernate Annotations wenn es mit JPA nicht lösbar sein sollte). Ich hab dafür folgende Java-Klassen erstellt:


Code:
@MappedSuperclass
public class Base {
	
	private Key key;
	
	private int yyy;

	@EmbeddedId
	public Key getKey() {
    	return key;
    }

	public void setKey(Key key) {
    	this.key = key;
    }

	public int getYyy() {
    	return yyy;
    }

	public void setYyy(int yyy) {
    	this.yyy = yyy;
    }
	
	public void setPk1(int pk1) {
		key.setPk1(pk1);
	}
	
	@Transient
	public int getPk1() {
		return key.getPk1();
	}

	public void setPk2(int pk2) {
		key.setPk2(pk2);
	}
	
	@Transient
	public int getPk2() {
		return key.getPk2();
	}	

}

Code:
@Embeddable
@MappedSuperclass
public class Key {
	
	
	private int pk1;
	
	private int pk2;
	
	private int generic_pk3;

	
	@Column(name = "pk1", nullable = false, insertable = false, updatable = false)
	public int getPk1() {
    	return pk1;
    }

	public void setPk1(int pk1) {
    	this.pk1 = pk1;
    }

	@Column(name = "pk2", nullable = false, insertable = false, updatable = false)
	public int getPk2() {
    	return pk2;
    }

	public void setPk2(int pk2) {
    	this.pk2 = pk2;
    }

	@Column(nullable = false, insertable = false, updatable = false)
	public int getGeneric_pk3() {
    	return generic_pk3;
    }

	public void setGeneric_pk3(int generic_pk3) {
    	this.generic_pk3 = generic_pk3;
    }
	
	@Override
	public int hashCode() {
		return pk1 * pk2 * generic_pk3;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (obj == this) return true;
		if (obj == null || obj.getClass() != this.getClass()) return false;
		Key key = (Key) obj;
		if (key.getPk1() == getPk1() && key.getPk2() == getPk2() && key.getGeneric_pk3() == getGeneric_pk3())
			return true;
		else 
	    return false;		
	}

}

Code:
@Entity(name = "some_table_name")
public class FirstBaseImpl extends Base {
	
	
	public FirstBaseImpl() {
		setKey(new Key());
	}

	@Override
	@AttributeOverride(name = "generic_pk3", column = @Column(name = "pk3"))
	public Key getKey() {
		return super.getKey();
	}
	
	public void setPk3(int pk3) {
		getKey().setGeneric_pk3(pk3);
	}
	
	@Transient
	public int getPk3() {
		return getKey().getGeneric_pk3();
	}

}

Um diesen Code auszuführen verwende ich einen Hibernate EntityManager und sage nur .persist() auf ein testweise erstelltes Object.

Dabei bekomme ich eine Fehlermeldung die besagt dass die Spalte "generic_pk3" nicht gefunden werden konnte, was aber klar ist, da die spalte "pk3" heisst. Ich versuche dieses mapping mit der @AttributeOverride annotation herzustellen aber scheinbar wird das ignoriert.

Mach ich irgendwas falsch? Kann mir wer helfen?

Danke,

Christoph
 

semi

Top Contributor
Hier ein Beispiel.
Code:
@Embeddable
public class Key
{
   private int pk1;
   private int pk2;
   private int pk3;
   ...
}

@MappedSuperclass
public class Base
{
   @EmbeddedId
   private Key key;
   ...
}

@Entity
@AttributeOverride(name = "key.pk3", column = @Column(name = "pk3_impl"))
public class BaseImpl extends Base
{
   ...
}

@Entity
@AttributeOverride(name = "key.pk3", column = @Column(name = "pk3_impl2"))
public class BaseImpl2 extends Base
{
   ...
}
 
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
P Problem mit Data Tier 9
GilbertGrape Cascade Problem (Hibernate) Data Tier 3
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

Neue Themen


Oben