Java 在Hibernate中,基于某个字段值链接不同表的好解决方案是什么?
我有Java 在Hibernate中,基于某个字段值链接不同表的好解决方案是什么?,java,hibernate,mapping,Java,Hibernate,Mapping,我有文章表格和几个用户表格a_用户,b_用户。。。结构完全相同(但数据不同)。除了表名前缀之外,我不能更改*\u user表中的任何内容,但可以更改其他所有内容(用户表仅包含用户信息,其中没有关于文章或用户类型的内容) 我需要将文章链接到一个用户(多对一),但用户表名由用户类型字段定义。比如说 Article table record: ... user_id="5" user_type="a" 意味着它链接到一个用户表中id=5的用户(id 5在用户范围中不是唯一的,每个用户表都可以有其id
文章
表格和几个用户表格a_用户
,b_用户
。。。结构完全相同(但数据不同)。除了表名前缀之外,我不能更改*\u user
表中的任何内容,但可以更改其他所有内容(用户表仅包含用户信息,其中没有关于文章或用户类型的内容)
我需要将文章链接到一个用户(多对一),但用户表名由用户类型字段定义。比如说
Article table record:
...
user_id="5"
user_type="a"
意味着它链接到一个用户表中id=5的用户(id 5在用户范围中不是唯一的,每个用户表都可以有其id 5)
如何处理这种情况有什么建议吗?如何在Hibernate中映射此关系(xml映射,无注释),以便它在选择/更新期间自动为文章选择正确的用户?我应该如何映射用户表(一个或多个类?)
我需要运行如下查询:
from Article a where a.userType=:type and a.user.name=:name
谢谢。Hibernate有
@任何注释(和:
UserA
和UserB
共享由User
定义的相同架构:
@MappedSuperclass
abstract public class User {
@Id
private Long id;
private String name;
...
}
@Entity @Table(name = "a_user")
public class UserA extends User {}
@Entity @Table(name = "b_user")
public class UserB extends User {}
非常奇怪的数据库设计,表文章的外键是如何定义的?目前还没有定义。它过去是一个简单的多对一关系,与一个用户表。现在它必须是多个用户表。为什么有多个用户表?它们来自另一个产品(论坛),我们有几个论坛。谢谢,看起来这正是我需要的。
@MappedSuperclass
abstract public class User {
@Id
private Long id;
private String name;
...
}
@Entity @Table(name = "a_user")
public class UserA extends User {}
@Entity @Table(name = "b_user")
public class UserB extends User {}