@EmbeddedId und @GeneratedValue

Status
Nicht offen für weitere Antworten.

silentwater

Mitglied
Hi,

ich versuche für den PK einer JPA Entity eine eigene Wrapper Klasse zu erstellen, damit im Programmcode der PK nicht immer direkt int/long Werte übergeben werden. Allerdings funktioniert dies noch nocht

Java:
@Entity
public class Test implements Serializable {
	
	@EmbeddedId
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private TestId id;

	public TestId getId() {
		return id;
	}

	@SuppressWarnings("unused")
	private void setId(TestId id) {
		this.id = id;
	}
}
[/Java]

[code=Java]
@Embeddable
public class TestId implements Serializable{
	
	@Column(name = "ID")
	private int id;
	
	public int getId() {
		return id;
	}

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

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		TestId other = (TestId ) obj;
		if (id != other.id)
			return false;
		return true;
	}
}

Wenn ich nun versuche eine Entity mittels der Methode persist in der Datenbank zu speichern, erhakte ich folgende Fehlermeldung:

Exception in thread "main" <openjpa-1.2.1-SNAPSHOT+OPENJPA-679-Final-r422266:746282 fatal store error>
org.apache.openjpa.persistence.RollbackException:
Can not set int field de.test.jpa.entity.TestId .id to java.math.BigDecimal

Sind die beiden Annotationen nicht kombinierbar oder ist mir ein anderer Denkfehler unterlaufen? Über Hilfe würde ich mich freuen.

Viele Grüße
SilentWater
 

silentwater

Mitglied
Ich habe es auch schon mit BigDecimal versucht. Dann erhalte ich die witzige Fehlermeldung:

[highlight]org.apache.openjpa.persistence.PersistenceException: Can not set java.math.BigDecimal field de.test.jpa.entity.TestId.id to java.math.BigDecimal[/highlight]

Wenn ich Long verwende erhalte ich analog dazu die Fehlermedlung

[highlight]org.apache.openjpa.persistence.PersistenceException: Can not set java.lang.Long field de.test.jpa.entity.TestId.id to java.lang.Long[/highlight]

Als Datenbank verwende ich eine DB2, als JPA Framework openjpa (openjpa-1.2.1-r752877). Schaut für mich nach einem Bug aus, oder ich übersehe etwas wesentliches.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben