Hibernate-混合实体/组件继承映射

Hibernate-混合实体/组件继承映射,hibernate,inheritance,orm,Hibernate,Inheritance,Orm,假设我有以下类层次结构: interface Client: String name String country class RegisteredClient implements Client: String assignedId class UnregisteredClient implements Client class ClientRisk: Client client int riskLevel 其思想是,ClientRisk可以链接

假设我有以下类层次结构:

interface Client:
    String name
    String country

class RegisteredClient implements Client:
    String assignedId

class UnregisteredClient implements Client

class ClientRisk:
    Client client
    int riskLevel
其思想是,
ClientRisk
可以链接到具有id的已注册客户端(这是自定义的,来自其他地方),也可以链接到某个自定义客户端(未注册)。现在存在以下数据库结构:

REGISTERED_CLIENT(ASSIGNED_ID, NAME, COUNTRY)
CLIENT_RISK(REG_CLIENT_ID, UNREG_NAME, UNREG_COUNTRY, RISK_LEVEL)
我用Hibernate映射了这个实体,比如在
ClientRisk
中有两个隐藏字段,一个引用
RegisteredClient
,另一个--
UnregisteredClient
,它被映射为一个组件。我在其中添加了一个属性
client
,它在运行时区分这两个字段

这是一种丑陋的解决方案,而且无法扩展(例如,我不能只在criteria或HQL中编写
client.name
)。另一方面,我不想将未注册的客户机放到另一个表中,因为它是自定义的,并且无论如何都不会被共享。我不想将
未注册的客户
映射为基于
客户风险
表的实体,这将导致不必要的联接(
客户风险联接客户风险

我的问题是,在Hibernate中处理这种情况的最佳方法是什么