(JPA) id nach persist immer 0

Soahc

Aktives Mitglied
Hallo,

ich nutz auf einen JBoss Server eine Stateless-Session-Bean als DAO (JPA/Hybernate). Wenn ich eine neu erzeugt Entität einer Entity-Bean an die Session Bean übergebe:

Java:
@Override
public void persist(IEntity entity) {	
	em.persist(entity);		
}

hat sie danach immernoch die ID 0. Ein em.flush() hat auch nicht gebracht.
Die id der Entity Bean ist wie folgt definiert:

Java:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;


Ich nutze eine mySQL-Datenbank bei der die id der entsprechenden Tabelle auf AUTO_INCREMENT gesetzt.
Es wird alles korrekt gespeichert, und wenn ich mir später die Entity per

Java:
em.find

hole, dann hat sie auch eine Id. Ich möchte aber, dass die Entity-Bean gleich nach dem persist-vorgang die korrekte Id bekommt. Ist das ohne Umweg über find möglich? Und wenn ja, wie?

liebe Grüße,

Soahc
 
Zuletzt bearbeitet:

Soahc

Aktives Mitglied
ich habe einen Beitrag in einem anderem Forum gelesen, nach dem die ID-Definition so aussehen sollte:

Java:
@Id()
	@GeneratedValue
    @Column(nullable = false)
	private long id;

aber auch das bringt nichts. Die ID ist nach dem Persist immernoch 0 ... hat in der Datenbank aber einen generierten, anderen Wert bekommen.
 

Soahc

Aktives Mitglied
och nee... ich bin so doof. Da meine SessionBean ein RemoteInterface implementiert und der Zugriff darauf letztendlich ein RPC über RMI darstellt, muss ich das persistierte Objekt ja auch wieder zurück geben. -> Der Debugger hat mir gezeigt, dass die Entity innerhalb des Entity-Manager-Kontextes sehr wohl eine ID hat.

Java:
	@Override
	public IEntity persist(IEntity entity) {
		em.persist(entity);
		return entity;
	}

na gut, ich muss aber auch dazu sagen, dass ich 3 Bücher zu dem Thema hier habe und keines auf diese Problematik eingeht. :/
 

Ähnliche Java Themen


Oben