我在mysql数据库中有两个表: user
以及 user_additional_details
包含下面描述的列。
用户
id(自动递增)
用户ID(唯一)
名字
姓
电话
电子邮件
用户其他详细信息
id(自动递增)
userid(与user中的userid匹配)
个人电话
个人电子邮件
表 user_additional_details
中每个用户标识包含0或1行 user
table。但是,数据库没有定义外键约束。理想情况下,列 user_additional_details
应在中添加为可为null的列 user
表,但由于某种未知的原因没有这样做。现在我需要为下面的查询定义实体。
select user.userId, user.phone, user_a_d.personalPhone
from user
join user_additional_details as user_a_d
on user.userId = user_additional_details.userId
我尝试为这些表定义jpa实体,但没有弄清楚如何创建使用不同表中的列的实体。
2条答案
按热度按时间vcudknz31#
似乎您正在寻找的是secondarytable注解
为带注解的实体类指定辅助表。指定一个或多个辅助表表示实体类的数据跨多个表存储。
在这里你可以找到一个详细的例子如何使用它-http://www.thejavageek.com/2014/09/18/jpa-secondarytable-annotation-example/
t5fffqht2#
创建userentity(包含user表中的所有列)和useradditionaldetailsentity(包含user\u additional\u details表中的所有列)。我假设您知道如何创建jpa实体并将它们Map到数据库表。
我希望您已经在spring配置文件中创建了实体管理器工厂对象。在创建实体管理器对象的帮助下。
创建entutymanager对象后:
一旦获得resultlist,就可以遍历对象数组的列表并获取数据。resultlist的每个索引将包含表示一行的对象数组请记住,查询中提到的字段名应该与jpa实体中提到的字段名相同。