Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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_Jpa - Fatal编程技术网

Java 在单个表上映射两个类

Java 在单个表上映射两个类,java,hibernate,jpa,Java,Hibernate,Jpa,我要一张桌子 用户 -id:long -登录:varchar -武器:瓦查尔 -魔法:瓦查尔 我想把这个表映射到两个类上(使用Hibernate/JPA) 及 如果我发送HQL查询:从Mag m中选择m,其中m.login=?则我得到Mag实例 如果我发送HQL查询:从Warrior w中选择w,其中w.login=?则我得到Warrior实例 我试着做这样的东西 @Entity @Table(name = "User") class User { long id;

我要一张桌子

用户
-id:long
-登录:varchar
-武器:瓦查尔
-魔法:瓦查尔

我想把这个表映射到两个类上(使用Hibernate/JPA)

如果我发送HQL查询:
从Mag m中选择m,其中m.login=?
则我得到Mag实例
如果我发送HQL查询:
从Warrior w中选择w,其中w.login=?
则我得到Warrior实例
我试着做这样的东西

@Entity  
@Table(name = "User")  
class User   
{  
   long id;  
   String login;  
}  

@Entity  
class Mag extends User  
{  
   String magic;  
}  

@Entity  
class Warrior extends User   
{  
   String weapon;  
}   

但是@heritation需要鉴别器列,但我没有鉴别器

您正在寻找的,它允许子类从超类继承注释,而不需要鉴别器。

如果您有一个deliminator列,您可以使用鉴别器。假设您的除沫器列为

utype char(1)

如果

utype=m,这是一个Mag实体,并且

utype=w,即战士实体

请查找下面的代码

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "utype", discriminatorType =  DiscriminatorType.CHAR)
@Table(name = "User")  
class User   
{  
   long id;  
   String login;  
}  

@Entity
@DiscriminatorValue("m")  
class Mag extends User  
{  
   String magic;  
}  

@Entity  
@DiscriminatorValue("w")  
class Warrior extends User   
{  
   String weapon;  
}  
@Entity  
@Table(name = "User")  
class User   
{  
   long id;  
   String login;  
}  

@Entity  
class Mag extends User  
{  
   String magic;  
}  

@Entity  
class Warrior extends User   
{  
   String weapon;  
}   
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "utype", discriminatorType =  DiscriminatorType.CHAR)
@Table(name = "User")  
class User   
{  
   long id;  
   String login;  
}  

@Entity
@DiscriminatorValue("m")  
class Mag extends User  
{  
   String magic;  
}  

@Entity  
@DiscriminatorValue("w")  
class Warrior extends User   
{  
   String weapon;  
}