java - 在单个表上映射两个类

标签 java hibernate jpa

让我有 table

用户
-id : 长
-登录名:varchar
-武器:varchar
-魔法:varchar

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

class Mag  
{   
   long id;  
   String login;  
   String weapon;  
}  

class Warrior  
{  
   long id;  
   String login;  
   String magic;  
}  

如果我发送 HQL 查询:SELECT m FROM Mag m WHERE m.login = ? 然后我得到 Mag 实例
如果我发送 HQL 查询:SELECT w FROM Warrior w WHERE 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;  
}   

但@Inheritance 重新列出了鉴别器列,但我没有鉴别器。

最佳答案

您正在寻找 MappedSuperClass ,它允许子类从父类(super class)继承注解而不需要鉴别器。

关于java - 在单个表上映射两个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10426690/

相关文章:

java - 将证书添加到 keystore 和信任库

java - 保存大量对象列表需要花费大量时间

java - Hibernate:我不想删除 child

java - 如何用JPA进行注入(inject)?

java - 使用hibernate从数据库中检索blob并使用jsp在网页上显示

java - Spring Data JPA - 如何通过 child ID 获取 parent ?

java - 如何在 Linux、Mac 和 Windows 上从 Java 启动 .NET 应用程序?

java - 图像为空时数据未插入数据库

java - 如何使模块 x 的第 3 方依赖项与其一起到达依赖于模块 x 的模块 y 的类路径?

java - hibernate连接oracle时出现Hibernate异常