hi
danke für die tipps.. ich hab mich nun für einen anderen weg entschieden,, und zwar aht die zwischentabelle Stock jetzt eine StockId, 2 FKs (Userid , Productid) und 1 Attriut Quantity
Von der idee würd das eigentlich funktionieren, nur hab ich imemr wieder massive Probleme wenn ich ein stock objekt pdaten will bzw ein User objekt updaten will
Bekomme imemr den Fehler: Aktualisieren von ("SS09_DBS1"."STOCK"."USERID") zu NULL nicht möglich
und Hibernate will imemr folgendes Statement absetzen: update stock set userid=null where userid=?
was mir echt nicht einleutet!
Köntn ihr euch evtl mein Mapping anschaun und mir sagen ob ich einen Fehler irgendwo habe?
Code:
@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
Code:
@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 ih allerdings von einem vorhandenen Stock Objekt die QWuantity ändere und es nur updaten will, kommt der oben genannte Fehler
So zb will ich das Stock objekt updaten
Code:
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