我想在表供應商詳細信息和產品詳細信息之間建立一對多關係。像一個供應商可以有多個產品。但是當我插入數據到表中插入所有四個字段,但不映射vendorid到ProductDetail表 和生成的查詢是這樣的。無法使用Hibernate Mapping映射字段
Hibernate: insert into ProductInfo (productCategory, productDetails, productPrice, VendorId) values (?, ?, ?, ?) It shuld map vendor ID also but in table its empty.
VendorDetail.java
package com.cts.entity;
import javax.persistence.*;
@Entity
@Table(name = "VendorInfo")
public class VendorDetails {
@Id
@Column
private Long VendorId;
@OneToMany
private ProductDetails productdetail;
@Column
private String VendorName;
@Column
private String Password;
public String getVendorName() {
return VendorName;
}
public void setVendorName(String vendorName) {
VendorName = vendorName;
}
public Long getVendorId() {
return VendorId;
}
public void setVendorId(Long vendorId) {
VendorId = vendorId;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
}
ProductDetails.java
package com.cts.entity;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@[email protected](name = "ProductInfo")
public class ProductDetails {
@ManyToOne(cascade = CascadeType.ALL)@JoinColumn(name = "VendorId")
private VendorDetails vendordetails;
public ProductDetails() {
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int productId;
@Column
private String productCategory;
@Column
private String productDetails;
@Column
private String productPrice;
public VendorDetails getVendordetails() {
return vendordetails;
}
public void setVendordetails(VendorDetails vendordetails) {
this.vendordetails = vendordetails;
}
public int getProductId() {
return productId;
}
public void setProductId(int productId) {
this.productId = productId;
}
public String getProductCategory() {
return productCategory;
}
public void setProductCategory(String productCategory) {
this.productCategory = productCategory;
}
public String getProductDetails() {
return productDetails;
}
public void setProductDetails(String productDetails) {
this.productDetails = productDetails;
}
public String getProductPrice() {
return productPrice;
}
public void setProductPrice(String productPrice) {
this.productPrice = productPrice;
}
}
DAO類ProductDetailDaoImpl.java
package com.cts.Dao;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.cts.entity.ProductDetails;
import com.cts.entity.to.ProductDetailsTo;
@Repository
public class ProductDetailDaoImpl implements ProductDetailDao {
@Autowired
SessionFactory sessionFactory;
@Transactional
public boolean saveProductInfo(ProductDetailsTo productTo) {
System.out.println("M in Registration DAO");
System.out.println(productTo.getProductCategory());
System.out.println(productTo.getProductDetails());
System.out.println(productTo.getProductId());
System.out.println(productTo.getProductPrice());
//getting productTo data to entity class
ProductDetails prodet = productTo.getEntity();
System.out.println("Value of product details is:" + prodet.getProductDetails());
sessionFactory.getCurrentSession().save(prodet);
return false;
}
}
@OneToMany(targetEntity = ProductDetails.class)可能有幫助嗎?也可以嘗試加入@JoinColumn – Marcel