我有四个具有相同sql架构的表
user_1
+------+--------+----------------------+
| code | name | pass |
+------+--------+----------------------+
| 1 | rajiv | 12345 |
+------+--------+----------------------+
user_2
+------+--------+----------------------+
| code | name | pass |
+------+--------+----------------------+
| 1 | rajiv1 | 12345 |
+------+--------+----------------------+
user_3
+------+--------+----------------------+
| code | name | pass |
+------+--------+----------------------+
| 1 | raji2 | 12345 |
+------+--------+----------------------+
user_4
+------+--------+----------------------+
| code | name | pass |
+------+--------+----------------------+
| 1 | raji3 | 12345 |
+------+--------+----------------------+
我不想为这些表制作4个实体类
有没有办法让我只能定义一个实体类和地图 所有四个表到该实体,以便我可以从任何一个获取数据 表我想
答案 0 :(得分:0)
如果您的数据库支持视图,我建议您创建一个包含所有四个表的数据的视图,并将此视图映射到一个实体。这可能比尝试将4个表映射到一个实体更简单,更清晰。
答案 1 :(得分:0)
为什么不创建一个表并向其添加属性usernumber,在构建与实体的关联时创建四个引用,每个引用都有不同的用户编号,并且都映射到同一个表。
另一种方法,如果您的实体与每个用户表有关联,创建一个类用户并使用注释“@Embeddable”使其可嵌入,在您的实体中覆盖列的名称
@AttributeOverrides({
@AttributeOverride(name = "code",column=@Column(name="user1_code"))})
private User user1;
@AttributeOverrides({
@AttributeOverride(name = "code",column=@Column(name="user2_code"))})
private User user2;
请注意,这不会映射到另一个表,而是将每个用户的列合并到您的实体