2016-06-21 13 views
2

Hallo Stackoverflow, hatte ich harte Zeit mit OneToMany Mapping Ich habe gegoogelt, um die Lösung von Morgen nichts geholfen zu finden.Fremdschlüssel Wert ist Null in OneToMany Zuordnung

Ich versuche, @ OneToMany Mapping-Beziehung zu tun. folgenden sind die Klassen:

Klasse: 1

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "cbid") 
private int cbid; 

@ManyToOne(cascade = CascadeType.ALL) 
@JoinColumn(name = "cid", referencedColumnName = "custid", insertable = false, updatable = false) 
private CustomerDetails customerDetails; 

@Column(name = "customerid") 
private Integer customerid; 
@Column(name = "subtotal") 
private Double subtotal; 
@Column(name = "tax_amount") 
private Double tax_amount; 
@Column(name = "total_amount") 
private Double total_amount; 
@Column(name = "paid_amount") 
private Double paid_amount; 
@Column(name = "amount_due") 
private Double amount_due; 
@Column(name = "invoiceNumber") 
private int invoiceNumber; 
@Column(name = "d") 
private Date d; 

@OneToMany(mappedBy="cbpd", cascade=CascadeType.ALL, fetch=FetchType.LAZY) 
@OrderColumn(name="lindex") 
private List<ProductNameBuyingDetails> pnbd = new ArrayList<ProductNameBuyingDetails>(); 
//setters and getters 

Klasse: 2

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "byno") 
private int buyingnumber; 
@Column(name = "productnumber") 
private Integer productNumber; 
@Column(name = "productname") 
private String productName; 
@Column(name = "productprice") 
private Double productPrice; 
@Column(name = "productquantity") 
private Double productQuantity; 
@Column(name = "producttotal") 
private Double productTotal; 

@ManyToOne(cascade=CascadeType.ALL) 
@JoinColumn(name="pbid", referencedColumnName="cbid", insertable=false, updatable=false) 
private CustomerBuyingProductsDetails cbpd; 
//setters and getters 

I session.save() Methode auf diese Weise

CustomerBuyingProductsDetails customerBuyingProductsDetails = new CustomerBuyingProductsDetails(); 
    customerBuyingProductsDetails.setCustomerid(customerBuyingProducts.getCustomerid()); 
    customerBuyingProductsDetails.setInvoiceNumber(customerBuyingProducts.getInvoiceNumber()); 
    customerBuyingProductsDetails.setAmount_due(customerBuyingProducts.getAmount_due()); 
    customerBuyingProductsDetails.setD(customerBuyingProducts.getD()); 
    customerBuyingProductsDetails.setPaid_amount(customerBuyingProducts.getPaid_amount()); 
    customerBuyingProductsDetails.setSubtotal(customerBuyingProducts.getSubtotal()); 
    customerBuyingProductsDetails.setTax_amount(customerBuyingProducts.getTax_amount()); 
    customerBuyingProductsDetails.setTotal_amount(customerBuyingProducts.getTotal_amount()); 
    sessionFactory.getCurrentSession().save(customerBuyingProductsDetails); 

    Iterator<Integer> itrNum = customerBuyingProducts.getProductNumber().iterator(); 
    Iterator<String> itrName = customerBuyingProducts.getProductName().iterator(); 
    Iterator<Double> itrPrice = customerBuyingProducts.getProductPrice().iterator(); 
    Iterator<Double> itrQuan = customerBuyingProducts.getProductQuantity().iterator(); 
    Iterator<Double> itrTotal = customerBuyingProducts.getProductTotal().iterator(); 
    int i=0; 
    while (itrNum.hasNext()) { 

     ProductNameBuyingDetails pnbd = new ProductNameBuyingDetails(); 
     pnbd.setProductNumber(itrNum.next()); 
     pnbd.setProductName(itrName.next()); 
     pnbd.setProductPrice(itrPrice.next()); 
     pnbd.setProductQuantity(itrQuan.next()); 
     pnbd.setProductTotal(itrTotal.next()); 
     pnbd.setCbpd(customerBuyingProductsDetails); 
     sessionFactory.getCurrentSession().save(pnbd); 
     customerBuyingProductsDetails.getPnbd().add(pnbd); 
    } 
    sessionFactory.getCurrentSession().save(customerBuyingProductsDetails); 

} 

Ruhe verwende erzeugt die Abfrage auf diese Weise

Hibernate: insert into cb (amount_due, customerid, d, invoiceNumber, paid_amount, subtotal, tax_amount, total_amount, cbid) values (?, ?, ?, ?, ?, ?, ?, ?, ?) 
Hibernate: insert into prodnamebuy (productname, productnumber, productprice, productquantity, producttotal, byno) values (?, ?, ?, ?, ?, ?) 

Fremdschlüssel Wert wird nicht eingefügt, in der Datenbanktabelle zeigt es leer (null) Ich kann nicht korrigieren, wo ich falsch liege. Vielen Dank im Voraus .. Hoffnung für das beste ..

Antwort

0

denke ich, das Problem sein könnte, dass Sie die @JoinColumneinführbar Attribut falsch, setzen, was bedeutet, dass die Spalte in keiner INSERT enthalten sein Aussagen. Auch, wenn Sie updateable = false tun, wird es in keiner UPDATE Aussagen enthalten sein.

Weitere Informationen finden Sie unter this Artikel.

+0

danke für Hilfe, Problem gelöst ... Danke :) –

+0

Wenn das Problem aufgrund einer der Antworten gelöst wurde, können Sie bitte akzeptieren? :) – IntelliData