6
respostas

Dificuldade em mapear com o Hibernate

Pessoal, boa tarde!

Estou tentando criar um projeto de liga de futebol, e para que isso ocorra eu preciso mapear a classe Time com Partida, onde partida deveria ter como duas FK os IDs do time, porém não tenho ideia de como fazer isso, poderiam me dar uma luz?

Classe partida

@Table(name = "partida")
@Entity
public class Partida implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @ManyToOne
    @JoinColumn(name = "id_liga")
    private Liga liga;
    @ManyToMany
    private List<Time> times;
    @Column
    private Integer golsTimeCasa;
    @Column
    private Integer golsTimeVisitante;
    @Temporal(value = TemporalType.DATE)
    private Date dataPartida;

Classe time

@Table(name="time")
@Entity
public class Time implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @Column(length = 55)
    private String nome;
    @ManyToOne
    @JoinColumn(name = "id_liga")
    private Liga liga;
    @ManyToMany
    private List<Partida> partidas;
6 respostas

Uma partida só pode ter dois times sempre certo? Uma forma de fazer seria colocar dois times na classe partida mesmo:

class Partida {
    // outros dados
    private Time time1;
    private Time time2;
}

Sim, Guilherme, de fato só pode ter dois times, mas como eu poderia utilizar o Hibernate para gerar esse ID? Tinha utilizado o ManyToMany por não saber, mas penso da mesma forma como você :c

Olá Falcão,

Existe uma forma de estar associando Partida com Time com o Atributo MappedBy do Hibernate no seu Tipo de Relacionamento.

Assim o Hibernate irá criar uma nova tabela com ID da Partida e o ID do Time e de resto é questão de fazer um Join no Banco de Dados. Veja este Artigo:

https://www.devmedia.com.br/associacoes-com-mappedby-no-hibernate/29425.

:D, Bons Estudos

Clovis, interessante artigo, obrigado por compartilhar!

Entretanto ainda não consegui o resultado que queria, infelizmente.

class Partida {
    // outros dados
    @ManyToOne
    private Time time1;
    @ManyToOne
    private Time time2;
}

No caso não é necessário adicionar a anotação de @OneToMany na classe Time?