Ich habe in jeder Tabelle ein gleiches Feld ‘USER_CHANGE’. Habe eine Tabelle Marke mit Felder id, Bezeichnung, user_change. Die Idee, eine Abstract class soll USER_CHANGE übernehmen:
public abstract class AbstractPersistenceObject implements Serializable {
private static final long serialVersionUID = 1L;
public AbstractPersistenceObject() {
super();
}
private String userChange;
@Column(name="USER_CHANGE", length = 255, nullable = true, unique = false)
public String getUserChange() {
return userChange;
}
public void setUserChange(String userChange) {
this.userChange = userChange;
}
}
mit:
@Entity()
@Table(name="EM_MARKE")
public class Marke extends AbstractPasoPersistenceObject{
private Long id;
private String bezeichnung;
public Marke(){
}
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_EM_MARKE")
@SequenceGenerator(name="SEQ_EM_MARKE", sequenceName = "SEQ_EM_MARKE")
@Id
@Column(name="MARKE_ID")
public Long getId() {
return this.id;
}
public void setId(Long markeId) {
this.id = markeId;
}
@Column(name="BEZEICHNUNG", length = 255, nullable = false, unique = false)
public String getBezeichnung() {
return bezeichnung;
}
public void setBezeichnung(String bezeichnung) {
this.bezeichnung = bezeichnung;
}
}
dann:
Marke marke = entityManager.find(Marke.class, 11L);
if(marke == null){
marke = new Marke();
}
marke.setBezeichnung("test");
marke.setUserChange("ich bin's");
try {
entityManager.persist(marke);
}catch(Exception e){
} finally {
}
Bei create wird Id und Bezeichnung geschrieben, bei update Bezeichnung upgedated, alles ohne Exception, aber das Feld ‘USER_CHANGE’ wird gesetzt, aber in der Db nicht gespeichert. Ein Datensatz in der Db mit manuellem Eintrag für ‘USER_CHANGE’ wird für das Feld null ausgelesen. Was muss ich ändern/probieren, um das Feld ‘USER_CHANGE’ erfolgreich auszulesen bzw. zu schreiben?
Musst doch dann noch fuer eine strategy entscheiden (zB. InheritanceType.SINGLE_TABLE etc.)
Nur durch reine Java Vererbung bekommt JPA nix davon mit dass du in JPA eine Vererbungshierachy ausdruecken willst, d.h. dein @Column(name=„USER_CHANGE“, length = 255, nullable = true, unique = false) in der Basisklasse wird ignoriert.
Nachtrag:
So aus Neugier, wozu soll denn dass userChange Feld ueberhaupt dienen?
Hatte mir gedacht, das ganze selbst fertig zu frickeln, vonwegen HTTP-Requests, das ganze ist aber wirklich Zeitaufwändig, da ich jede Funktion vom Member-Center nutzen möchte. Auch ist hier das Problem: Wenn Apple etwas an der Seite ändert, muss ich mich auch hier drum kümmern.Ich hatte die Tage schon ein ähnliches Projekt gefunden gehabt, was aber (ich glaube) auf Ruby basierte - Habs grad hier nicht auf meinem Rechner. Ich bräuchte das ganze entweder in PHP oder Java, kennt jemand derartiges?