を休止状態これは私のmysql dbは、複合キーマッピング外部キー問題
user.java
@Entity
@Table(name="user")
public class user
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int uid;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy ="user")
private Set<order> orders = new HashSet<order>();
//
setter ,getter ,and other
}
order.java
@Entity
@Table(name="`order`")
public class order
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int oid;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="oid", referencedColumnName="oid")
private Set<orderitem> orderitems = new HashSet<orderitem>();
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="uid")
private user user ;
/////
setter ,getter and other
}
orderitem.java
@Entity
@Table(name="orderitem")
public class orderitem
{
@EmbeddedId
private orderitem_PK PK; //composite key
@ManyToOne
@JoinColumn(name="oid", referencedColumnName="oid" ,insertable = false, updatable = false)
private order order;
@ManyToOne
@JoinColumn(name="pid", referencedColumnName="pid", insertable = false, updatable = false)
private product products ;
////
setter,getter and other
}
orderitem_PKです。 Java
@Embeddable
public class orderitem_PK implements Serializable
{
private int oid;
private int pid;
public orderitem_PK() {}
public orderitem_PK(int oid, int pid) {
this.oid = oid;
this.pid = pid;
}
// equals, hashCode
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return super.equals(obj);
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return super.hashCode();
}
と最後product.java
@Entity
@Table(name="product")
public class product
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int pid;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="pid", referencedColumnName="pid")
private Set<orderitem> orderitems = new HashSet<orderitem>();
//////////
setter,getter and other
}
それは私がこのコード
order order = new order();
order.setUser(user);
order.setOrdertotal(product.getPrice());
Date dt = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = df.format(dt);
java.sql.Timestamp buydate = java.sql.Timestamp.valueOf(nowTime);
order.setOrderdate(buydate);
/// delete this part will work
orderitem orderitem = new orderitem();
orderitem.setOrder(order);
orderitem.setProducts(product);
orderitem.setQuantity(product.getQuantity());
orderitem.setPrice(product.getPrice());
////
session.save(order);
session.save(orderitem);
出会い何らかのエラーによってデータを挿入しようとしているオンラインショッピングのページ
です。
org.hibernate.id.IdentifierGenerationException:私はコードのみが仕事であるユーザーと注文の部分を保存するときに、クラスModel.orderitem
:ヌルIDの生成。
オーダーアイテムコードを保存した後、問題が発生しました。
私は複合キーマッピングの外部キーが間違っていると思います。
しかし、私はそれを修正する方法がわかりません。
誰かが私が間違っていることを見つけることができますか?
ありがとうございました。
おかげではなく、「反射による[9]の値フィールドの値を設定できませんでした:[クラスModel.orderitem_PK.oid] Model.orderitem_PK.oidのセッター」私はあなたの方法を試してみて、それでもoccurre問題は、値を[ ]私が試行するたびに蓄積されます、それは奇妙です – alan14alan
@ mapsIdを使用してこれらのフィールドを設定する場合は、orderitem_PKでgetterとsetterのoidとpidを持つ必要があります。 – shubham
私はgetitterとsetterをorderitem_PKに持っています。 – alan14alan