Вопрос по java – Спящий режим: каскадный тип

15

Пусть у меня есть сущностьA и сущностьB, сущностьA иметь@OneToOne отношения сB.
Я хочу сделать следующее:
если я уберу А, то и Б тоже надо будет удалить.
Если я удалю B, то A не будет удален.

В какой сущности я должен установить

@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})  

и в какую сторону я должен установить

@OneToOne(cascade = {CascadeType.ALL})  

?

Ваш Ответ

3   ответа
3

если A & quot; имеет & quot; B, тогда вы должны определить CascadeType.ALL в A:

public class A {
  // changes to A cascade to B
  @OneToOne(cascade = {CascadeType.ALL})
  B b
}
0

Если класс A имеет класс B, тоCascadeType.ALL будут прикреплены на B. затем

Public Class A
{
  Private B b;
  @OneToOne(cascade = CascadeType.ALL)   
  public B getB() {       
    return this.b;   
   }     
  public void B(B b) {         
    this.b = b;   
  }
}

для более подробной информацииэтот пример

30

Каскад от А до В должен быть размещен на поле, на которое ссылаютсяB в классеA, каскад от B до A должен быть размещен на поле ссылкиA в классеB.

public class A {
    @OneToOne(cascade = {CascadeType.ALL})
    B b;
}

Должен быть в классеA, так как вы хотите, чтобы каждое действие каскадноB.

public class B {
    @OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
    A a;
}

Должен быть в классеB, поскольку вы хотите только определенные действия каскадноA

Error: User Rate Limit ExceededhereError: User Rate Limit ExceededCascadeType.ALLError: User Rate Limit ExceededREMOVEError: User Rate Limit ExceededDETACHError: User Rate Limit Exceeded
Error: User Rate Limit ExceededCascadeType.MERGE, CascadeType.PERSISTError: User Rate Limit ExceededCascadeType.REFRESH?

Похожие вопросы