создать справочную таблицу из двух таблиц - PullRequest
0 голосов
/ 13 сентября 2018

Я преобразую свой сайт для использования Java EE и гибернации!

У меня есть 3 таблицы:

like
id | table | idElement | userId

movie
movie_id | title | duration

videoGame
game_id | title | nbPlayer

и в настоящее время 2 класса:

@Entity
@Table(name="movie")
public class Movie {

    @Id
    @GeneratedValue
    @Column(name="movie_id")
    private Integer id;
    private String title;
    private int duration;

@Entity
@Table(name="videoGame")
public class Game {

    @Id
    @GeneratedValue
    @Column(name="game_id")
    private Integer id;
    private String title;
    private int nbPlayer;

Я не знаю, как сделать мою таблицу "похожей", чтобы связать ее с одной из двух таблиц и правильным идентификатором?

пример:

table like:
+---+-------+-----------+-------+
|id | table | idElement | userId|
|1  | movie |  1        | 1     |
|1  | game  |  5        | 3     |
+---+-------+-----------+-------+

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 13 сентября 2018

Похоже, что нет прямого способа привязать ваши таблицы к спящему режиму (по крайней мере, я не в курсе).

Используя наследование, вы можете произвести аналогичный эффект. Movie и Game могут быть подклассом другого класса (скажем, Likable). Так что вы можете использовать Likable класс, как показано ниже:

 @Entity
 @Table(name="like")
 public class Like {

   @Id
   @GeneratedValue
   @Column(name="like_id")
   private Integer id;

   @ManyToOne
   @JoinColumn(name="likable_id", nullable=false)
   private Likable likable;

   @ManyToOne
   @JoinColumn(name="user_id", nullable=false)
   private User user;
}

Likable класс будет выглядеть так:

@Entity  
@Table(name = "likable")  
@Inheritance(strategy=InheritanceType.JOINED)   
public class Likable {  

   @Id  
   @GeneratedValue(strategy=GenerationType.AUTO)     
   @Column(name = "id")  
   private int id;  

 }

Movie класс:

 @Entity
 @Table(name="movie")
 @PrimaryKeyJoinColumn(name="id")  
 public class Movie extends Likable {

     private String title;
    private int duration;
}

А Game класс:

@Entity
@Table(name="videoGame")
@PrimaryKeyJoinColumn(name="id")
public class Game extends Likable {

   private String title;
   private int nbPlayer;
}
...