Hibernate Mapping Problem

Status
Nicht offen für weitere Antworten.
B

beuschl

Gast
hi

habe eine Frage zum Hibernate Mapping (annotations)
und zwar habe ich folgende Tabellen auf der Datenbank: Person - Stock - Product
person tabelle hat personid als PK
product tabelle hat product id als PK
und Stock hat stockid als PK, 2 FKs (userid, productid) und nein zusätzliches attribut "quantity"

Wenn ich jetzt zb ein vorhandenes Stock Object updaten will (habe zb quantity erhöht) bzw ein User objekt uodaten will(weil er ein neues Stock Objekt in sein HashSet bekommen hat) bekomme ich den Fehler: Aktualisieren von ("SS09_DBS1"."STOCK"."USERID") zu NULL nicht möglich
Hibernate will immer folgendes Statement absetzen: update stock set userid=null where userid=?
(wenn man ein User Objekt updaten will)
bzw beim Stock update, setzt er zuerst einen richtigen update Befehl und gleich danach den obigen update Befehl, weshalb ich dann natürlich eine Exception habe

Könnt ihr euch evtl mein Mapping anschaun und mir sagen ob ich irgendwo einen Fehler habe?


Java:
@Entity
@Table(name= "person")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int userid;

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinColumn(name="userid")
    private Set<Stock> userStock = new HashSet<Stock>();  // Stock Zwischentabelle   
.
.
.

Java:
@Entity
@Table(name= "stock")
public class Stock {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int stockid;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="userid")
    private User user;

    @OneToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinColumn(name="productid")
    private Product product;    // Welches Product
    private int quantity;       // Wieviel davon

Wenn ich jetzt zb ein neues Stock Objekt erzeuge und das mit Werten ausfülle (also ihm ein Product und einen user zuweise) und dann NEU in die Datenbank einfüge funktioniert es. Wenn ich allerdings von einem vorhandenen Stock Objekt die Quantity ändere und es nur updaten will, kommt der oben genannte Fehler

So zb will ich das Stock objekt updaten

Java:
Stock stock = new Stock(p, 1); // p = ein product objekt
         stock.setUser(u); // u = ein User objekt

    session.update(stock);  // stock update
                                    stocklist.add(stock);  // stock objekt zu einer HashSet hinzufügen
                                     u.setUserStock(stocklist);  // neue HashSet liste dem Use rzuordnen
                                     session.update(u);    // User updaten
 
S

SlaterB

Gast
wie passt
> So zb will ich das [vorhandene] Stock objekt updaten
zu Code mit 'new Stock(p, 1)'?

von Stock aus brauchst du doch sicher kein Cascade nach User, oder?

die Verbindung sollte glaube ich auch nur einmal gesetzt werden,
wenn du 'stock.setUser(u);' ausführst, dann müsste Hibernate selber den Stock beim User in die Liste einfügen,
evtl. erst nach update oder Neuladen des Users,

ganz schräg sieht es aus, wenn du danach beim User eine neue stocklist setzt bzw ein stockset, ist doch ein HashSet,
jeder User hat doch ein Set, wieso ein neues? und wo kommt das her, wer hat das wann erzeugt?

es muss doch fertige Beispiele zu sowas geben, in
https://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/example-parentchild.html
steht z.B.
> Now that the Child entity is managing the state of the link, we tell the collection not to update the link. We use the inverse attribute.
 
B

beuschl

Gast
hi

diese stocklist die du ansprichs hole ich mir vorher von einem User... dann iteriere ich diese durch (mache ein paar programmspezifische dinge, und füge ein neues Stock Objekt in die Liste ein.
Danach bekommt der angemeldete User diese aktualisierte stocklist (u.setUserStock(stocklist)). Das ganze soll dann atürlich auch in der Datenbank aktualisiert werden. So zumindest hab ich mir das ganze gedacht

und ja stocklist ist ein HashSet und jedes Userobjekt hat so ein HashSet
 
B

beuschl

Gast
hab mich noch kurz herumgespielt und folgendes gemacht

Java:
Stock stock = new Stock(p, 1); //neues Stock Object erzeugen (quantity = 1)
stock.setUser(u);   // Object dem User zuordnen

int quant = 0;

 if(stocklist != null){   // stocklist ist die aktuelle Stockliste des Users (u)
   for(Stock x : stocklist){
            if(x.getProduct().getId() == stock.getProduct().getId()){
                  quant = x.getQuantity();             // quantity des Stockobjects aus der liste holn und um 1 erhöhn
                   quant += stock.getQuantity();
             }
   }
                   
 stock.setQuantity(quant);

 session.update(stock);
  session.flush();

führe ich diesen code aus macht Hibernate auch richtig das kommando
update stock set productid=?, quantity=?, userid=? where stockid=?

commit etc geht auch alles richtig durch
nur in d er Datenbank wird die neue Quantity des einen Stock objects nicht upgedatet. also es sit zb vor dem code 5 und nach dem code müsste es 6 sein (laut debugger haben die Objekte auch die richtigen Werte) nur wird es nicht in die Datenbank geschrieben
hat jemand eine idee wieso?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Hibernate Mapping problem Datenbankprogrammierung 2
Y Hibernate - Problem bei Mapping Datenbankprogrammierung 7
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
T MySQL Hibernate Mapping Datenbankprogrammierung 5
V Frage zu Hibernate-Mapping Datenbankprogrammierung 11
T Hibernate: Reverse Enigneering - kein Mapping von Beziehungen Datenbankprogrammierung 8
Eldorado Hibernate Mapping Datenbankprogrammierung 5
S Hibernate Mapping Datenbankprogrammierung 3
lumo HIbernate: Could not read mapping document Datenbankprogrammierung 9
N OR-Mapping (Hibernate) versus JDBC Datenbankprogrammierung 5
S hibernate-Mapping schlägt fehl Datenbankprogrammierung 8
F Type-Mapping von DB-Type zu ObjectType via Hibernate Datenbankprogrammierung 6
Y Hibernate - Mapping der Beziehung zwischen 2 Tabellen Datenbankprogrammierung 2
G [Hibernate] Map von Dates Mapping mit Annotations Datenbankprogrammierung 6
G Hibernate Mapping für Interface Datenbankprogrammierung 3
S [Hibernate] Map in Map - Wie sieht Mapping Datei aus? Datenbankprogrammierung 10
C Hibernate-Mapping bei mehreren FK´s auf die selbe Tabelle Datenbankprogrammierung 12
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
T org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ..., could not initialize proxy - no Session Datenbankprogrammierung 5
T Realisierungsvorschläge Hibernate SQL Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
OnDemand Hibernate Realationen Datenbankprogrammierung 7
OnDemand Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
OnDemand Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
P erste Schritte mit Hibernate Datenbankprogrammierung 3
V Hibernate Interfaces von anderem Projekt Datenbankprogrammierung 2
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
B Hibernate und portierbare Datenbank Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben