0
私は以下のハイバネートエンティティの問題に直面しています。 レコードを基本表に挿入するときに、外部キーは常に子表としてNULLに挿入されます。 お手数ですが、ここで記法を設定していますか?Hibernateの外部キーは常にNULLとして挿入されます
//PK
@Entity
@Table(name="s_c_bur_dtl")
public class SurveyConductBurglaryDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator="surveycondbgdtl_seq")
@javax.persistence.SequenceGenerator(name="surveycondbgdtl_seq",sequenceName="surveycondbgdtl_seq",allocationSize=1,initialValue=1)
@Column(name = "nsurveycondbgdtlcd", unique=true, nullable = false, columnDefinition = "bigint")
private BigInteger surveyCondBgDtlCd;
@OneToMany(cascade = CascadeType.ALL,mappedBy="surveyConductBurglaryDetails")
private List<SurveyConductBurglaryProperty> surveyConductBurglaryProperties;
}
//FK
@Entity
@Table(name="s_c_bur_property")
public class SurveyConductBurglaryProperty {
@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator="surveycondbgproperty_seq")
@javax.persistence.SequenceGenerator(name="surveycondbgproperty_seq",sequenceName="surveycondbgproperty_seq",allocationSize=1,initialValue=1)
@Column(name = "nsurveycondbgpropertycd", unique=true, nullable = false, columnDefinition = "bigint")
private BigInteger surveyCondBgPropertyCd;
@ManyToOne
@JoinColumn(name = "nsurveycondbgdtlcd")
private SurveyConductBurglaryDetails surveyConductBurglaryDetails;
}
@Service
class SaveService{
@Autowired DbService dbService;
public void conductSurvey(SurveyConductBurglaryDetails surveyConductBurglaryDetails) throws IllegalAccessException, InvocationTargetException{
dbService.saveOrUpdate(surveyConductBurglaryDetails); // call for save
}
}
@Service
class DbService{
public void saveOrUpdate(Object insertObj){
Session session = surveyTransactionManager.getSessionFactory().getCurrentSession();
Transaction transaction = session.getTransaction();
if(!transaction.isActive()){
session.beginTransaction();
}
try{
session.saveOrUpdate(insertObj);
transaction.commit();
}catch(Exception e){
transaction.rollback();
// TODO Auto-generated catch block
if(logger.isDebugEnabled()){
logger.debug("SurveyDBService.saveOrUpdate Catch block");
}
e.printStackTrace();
}finally{
}
}
}
ありがとうございます!!!
保存するエンタテインメントコードを追加してください。 –
返信ありがとう、私は今も保存コードを共有しています。 –
「nullとして挿入されました」とはどういう意味ですか?トランザクションが完了した後はnullですか?または、データベースに 'insert'されたときにはnullです(Hibernateはこれを行い、外部キーにヌル値を持つ行を挿入し、次に行に対して' update'を行います)。 – Tobb