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 {}