Relações entre esquemas (entidades JPA) no designer de APIs do iGRP Studio — tipos de relação, configuração, código gerado e o Diagrama ERD.
As relações entre entidades definem-se no editor do esquema, num campo do tipo Relação. O Studio gera as anotações JPA (@OneToOne, @OneToMany, @ManyToOne, @ManyToMany) e mostra o resultado no Diagrama ERD.

O diagrama é só de leitura
Abre-o pelo + do nó Esquemas na árvore → Diagrama ERD. Serve para ver as entidades e as relações; para criar, mudar ou remover uma relação usa o editor do esquema.
Criar uma relação
O exemplo liga cada Pedido a um TipoPedido (muitos pedidos para um tipo).
TipoPedido), para a poderes referenciar.Pedido, junta um campo (tipo) e, no botão do tipo, escolhe Relação.TipoPedido) e a Coluna de Referência (id).pedidos) — o Studio gera também esse lado.ManyToOne com TipoPedido.id.
No separador Outros do mesmo painel ficam o Tipo de Busca (lazy por defeito), a Remoção de Órfãos e o Tipo de Cascata.
A relação define-se no lado proprietário
Cria a relação no campo da entidade que guarda a chave estrangeira (o lado proprietário — Pedido.tipo no exemplo). O lado inverso é gerado a partir de Nome do Campo quando a relação é bidirecional.
Tipos de relação
| Tipo | Exemplo | Lado proprietário |
|---|---|---|
| OneToOne (1:1) | País ↔ Presidente — um país tem um presidente | Quem tem a chave (Presidente.pais) |
| OneToMany (1:N) | Estado → Cidades — um estado tem várias cidades | Do lado N (Cidade.estado); o lado 1 usa mappedBy |
| ManyToOne (N:1) | Pedidos → TipoPedido — vários pedidos do mesmo tipo | O lado N (Pedido.tipo) |
| ManyToMany (N:M) | Alunos ↔ Cursos — um aluno em vários cursos e vice-versa | Quem define a tabela de junção (Aluno.cursos) |
// Presidente.java (proprietário)
@OneToOne
@JoinColumn(name = "pais_id")
private Pais pais;
// Pais.java (inverso)
@OneToOne(mappedBy = "pais")
private Presidente presidente;// Cidade.java (lado N, proprietário)
@ManyToOne
@JoinColumn(name = "estado_id")
private Estado estado;
// Estado.java (lado 1, inverso)
@OneToMany(mappedBy = "estado", cascade = CascadeType.ALL)
private List<Cidade> cidades = new ArrayList<>();// Aluno.java (proprietário)
@ManyToMany
@JoinTable(
name = "aluno_curso",
joinColumns = @JoinColumn(name = "aluno_id"),
inverseJoinColumns = @JoinColumn(name = "curso_id")
)
private List<Curso> cursos = new ArrayList<>();
// Curso.java (inverso)
@ManyToMany(mappedBy = "cursos")
private List<Aluno> alunos = new ArrayList<>();Remover uma relação
No campo da relação, abre Definir Relação e clica em Remover Relação; depois grava o esquema.

Corrigir uma relação errada
Se escolheste o tipo ou a entidade errados, remove a relação, grava, e cria-a de novo com os valores certos — não alteres só o tipo de uma relação já gerada.
Última atualização:
