Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从两个表创建一个引用表_Java_Hibernate_Jakarta Ee - Fatal编程技术网

Java 从两个表创建一个引用表

Java 从两个表创建一个引用表,java,hibernate,jakarta-ee,Java,Hibernate,Jakarta Ee,我将我的站点转换为使用JavaEE和hibernate 我有三张桌子: 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=

我将我的站点转换为使用JavaEE和hibernate

我有三张桌子:

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;
我不知道如何使我的表“像”链接到两个表和正确的id之一

例如:

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

非常感谢你的帮助

似乎没有直接的方法将表映射到hibernate(至少我不知道)

使用继承可以产生类似的效果
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;
}
@Entity  
@Table(name = "likable")  
@Inheritance(strategy=InheritanceType.JOINED)   
public class Likable {  

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

 }
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;
}
@Entity  
@Table(name = "likable")  
@Inheritance(strategy=InheritanceType.JOINED)   
public class Likable {  

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

 }
电影
课程:

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

     private String title;
    private int duration;
}
@Entity
@Table(name="videoGame")
@PrimaryKeyJoinColumn(name="id")
public class Game extends Likable {

   private String title;
   private int nbPlayer;
}
游戏
课程:

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

     private String title;
    private int duration;
}
@Entity
@Table(name="videoGame")
@PrimaryKeyJoinColumn(name="id")
public class Game extends Likable {

   private String title;
   private int nbPlayer;
}