Қалай орнату керек каскадты дұрыс күйге келтіру

Келесі орнатуым бар

A -> B -> C

A-салыстыру:

 
  
      
                  
              
      
      
          
              
          
          
              
  

B:


  
      
          
          
      
      
          
      
      
          
              
          
          
      
  

SubstanceItentifiedI18n:


  
      
          
          
      
      
          
                
  

Мен жаңа объектіні толық диаграмма арқылы енгізгенде

HibernateDaoSupport.merge(AObj);

бәрі дұрыс жасалған.

Бірақ мен қолданамын

HibernateDaoSupport.saveOrUpdate(AObj);

I get a DataIntegrityException

Cannot add or update a child row: a foreign key constraint fails 
(`table`.`B18n`, CONSTRAINT `B18n_fk` 
FOREIGN KEY (`id`) REFERENCES `B` (`id`))

Log4j журналына қараған кезде, біріктіру дегенді көремін

  1. it inserts B
  2. it inserts B18n

saveOrUpdate арқылы

  1. B18n кірістіреді, бұл ерекше жағдайға алып келеді

бұл анықталған (күткен) мінез-құлық немесе орнату кезінде дұрыс емес нәрсе бар.

2
Әрбір бірлестіктің дұрыс орнатылуына, екі бағытта да (яғни, тыйым салынған субстанцияға ие болғанына сенімдіміз бе, содан кейін бұл субстанцияны алып тастауға тырысу керек және керісінше)?
қосылды автор JB Nizet, көзі
иә, бұл шын мәнінде Джексон шығарады. Мен Джексон деректерімен Джексонды тамақтаймын және ол мен үшін бүкіл объект кестесін жасайды.
қосылды автор Jeremy S., көзі

1 жауаптар

Кейбір ойлардан кейін шешімнің қандай екенін анықтады.

Мен бар B жаңа элементтерін қосып отырдым. Бірақ B идентификаторын орнатпадыңыз, себебі біріктіру нысан диаграммасының SELECT сипатын жасайды, себебі оны сақтау/жаңарту мәселесі проблема емес.

saveOrUpdate on the other hand doesn't do it. Therefore the exception.

Case жабық;)

1
қосылды