私は2つのモデルクラス、UserとSalutationを以下のように持っています。 Userテーブルの外部キー(salutation_id)はオプションです。私がセッションオブジェクトをマージした直後にフラッシュするときにUserオブジェクトを保存するには、以下のエラーが発生しています。オブジェクトは未保存の一時的インスタンスを参照します - フラッシングする前に一時インスタンスを保存します:com.example.model.Salutation
オブジェクトが保存されていない一時的なインスタンスを参照する - フラッシュする前に一時的なインスタンスを保存します。com.example.model.Salutation表の敬称で
データがユーザテーブルから独立して挿入されています。 salutation_idを持つUserオブジェクトをnullとして保存しようとすると、このエラーがスローされます。
助けがあれば助かります。
@Entity
@Table(name = "user")
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(unique = true, nullable = false)
private String userName;
@ManyToOne
@JoinColumn(name = "salutation_id")
private Salutation salutationRef;
//Getter and Setter
}
@Entity
@Table(name = "salutation")
public class Salutation implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@ElementCollection
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(mappedBy = "salutationRef")
private List<Salutation> salutations;
//Getter and Setter
}
public Object create(Object object) {
Session session = sessionFactory.getCurrentSession();
Transaction txn = session.beginTransaction();
try {
object = (Object) session.merge(object);
session.flush(); //Getting error at this line object references an unsaved transient instance - save the transient instance before flushing: com.example.model.Salutation
txn.commit();
} catch (Exception e) {
txn.rollback();
e.printStackTrace();
}
return object;
}
ありがとうございました。
入力いただきありがとうございます。それは有り難いです。 –