JPA - Duvida simples

6 respostas
anderson.bonavides

Pessoal peguei um material de JPA para estudar porém não tenho a video aula. Seguindo estudando o código fiquei com a seguinte duvida:

package bar.model;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Sushi {
  
  @Id
  private int id;
  private String name;

  @ManyToOne (cascade=CascadeType.PERSIST)
  @JoinColumn(name="idtype")
  private Type type;
  
  public Type getType() {
    return type;
  }

  public void setType(Type type) {
    this.type = type;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

}

Para que serve a coluna Com as seguintes anotações:

@ManyToOne (cascade=CascadeType.PERSIST)
@JoinColumn(name="idtype")

6 Respostas

rod

seria ± isso:

@ManyToOne -> Varios “Sushi” para um “Type”.
@JoinColumn(name=“idtype”) -> o campo “idtype” é a foreign key na tabela Sushi para a tabela Type.

E

Essa anotação serve para designar que muitos Sushi terá um Type, (da mesma forma q muitos Usuario poderiam ter o mesmo perfil).

O @JoinColumn indica a coluana de relacionamento na sua entidade Sushi, é a chave estrangeira que faz a ligação com a entidade Type.

O CaacadeType é uma anotação que diz que quando vc for persistir um objeto Sushi ele vai fazer a operaão para o o outro lado do relacionamento (por exemplo incluir um Type novo se for o caso)…

Acho q é isso … se eu estiver errado corrijam-me :wink:

anderson.bonavides

Eklam e rlazoti obrigado pelo esclarecimento.

Eklam vc poderia ser mais claro sobre o CascadeType?

Grato!

E

Mais ou menos assim, o atributo cascade={CascadeType.PERSIST} define que qnd um Sushi sofree uma operção persist, o objeto Type relacionado a ele tbm vai sofre essa operação...

EntityManager eManager;

Sushi s = new Sushi();
Type t = new Type();
.
.
.
s.setType(t);
eManager.persist(s); // Internamente tbm será executada a operação persist para o objeto Type relacionado ao Sushi...

São cinco tipos de CascadeType, um para cada operação, vc pode usar um ou mais no mesmo relacionamento:
CascadeType.ALL
CascadeType.MERGE
CascadeType.PERSIST
CascadeType.REFRESH
CascadeType.REMOVE

anderson.bonavides

Obrigado. A duvida foi bem exclarecida.
Agora já esclarecido pergunto onde posso arrumar referências para tirar duvidas.

Grato.

:wink:

G

Só para posicionar, o cascade seria para o delete e não insert

Criado 29 de abril de 2008
Ultima resposta 29 de abr. de 2008
Respostas 6
Participantes 4