Eu tenho três tabelas A
, B
e C
e uma tabela de mapeamento A_B_C
que tem chaves estrangeiras para todos os três mesas e alguns outros atributos (digamos X
, Y
). Agora, quero associar-me a representar essas três tabelas na minha classe java.
O relacionamento entre essas tabelas é de um para muitos. Portanto, eu quero que minhas classes Java se pareçam com isso.
@Entity(name = "A")
@Table(name = "A")
public class A {
??? Hibernate Annotation or query
Map<B,List<C>> BMapC;
}
@Entity(name = "B")
@Table(name = "B")
public class B {
...
}
@Entity(name = "C")
@Table(name = "C")
public class C {
...
}
Gostaria de saber se seria possível aproveitar as anotações do Hibernate para isso. Caso contrário, existe uma maneira de escrever uma consulta personalizada e preencher a variável?
Infelizmente, o hibernate não fornece anotações prontas para uso em tais cenários. Esse cenário só pode ser tratado com a criação de um mapeamento de classe para A_B_C
:
@Entity
@Table(name = "A_B_C")
public class name = "A_B_C" {
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_B", nullable = false)
private B b;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_C", nullable = false)
private C c;
//Getters, Setters, other attributes etc.
}
E tenha uma lista desse objeto em A:
@Entity
@Table(name = "A")
public class name = "A" {
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_A", nullable = false)
private Set<A_B_C> abc;
//Getters, Setters, other attributes etc.
}
E programaticamente converter o conjunto abc em um mapa de B,C
.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras