从另一个表映射Hibernate值仅用于表示

从另一个表映射Hibernate值仅用于表示,hibernate,Hibernate,我无法通过搜索找到确切的场景 我有一个场景,其中我有两个实体 第一个存储一些基本信息: 表:表A ID,AccountId,FirstName,LastName 现在,我将帐户ID存储在表中,但我只想获取帐户名 无需在此第一个类中添加帐户实体。。。hibernate是否能够从Account表中查找一个值,并将其存储在(例如)表类中的String accountName字段中?这将仅用于显示一列。。。或者是将实体添加到此类并加载它的理想方法?您可以在表示表的实体中创建与Account表的关联,并通

我无法通过搜索找到确切的场景

我有一个场景,其中我有两个实体

第一个存储一些基本信息:

表:表A ID,AccountId,FirstName,LastName

现在,我将帐户ID存储在表中,但我只想获取帐户名
无需在此第一个类中添加帐户实体。。。hibernate是否能够从Account表中查找一个值,并将其存储在(例如)表类中的String accountName字段中?这将仅用于显示一列。。。或者是将实体添加到此类并加载它的理想方法?

您可以在表示表的实体中创建与Account表的关联,并通过如下查询获取帐户名称:

SELECT a.account.name FROM TableA a WHERE...

这将只获取帐户名,而不是整个帐户行。

您可以有如下内容:

private String accountName;

@Formula("(select acc.account_name from tb_account acc where acc.id = account_id)")
public String getAccountName() {
    return accountName;
}

public void setAccountName(String accountName) {
    this.accountName = accountName;
}
在主实体中,现在不需要映射关联,Hibernate每次获取主实体的实例时都会获取
account\u name


顺便说一句,Hibernate在select子句中使用嵌套查询来获取
accountName
,因此在
accountName
上进行筛选和排序不会很好,有什么好的理由不使用简单的关联吗?

我强烈建议您创建
Account
实体,即使是一个非常简单的帐户ID和帐户名

然而,如果你坚持不这样做,你可以采取一些替代方案

  • 如中所述,您可以使用subselect获取帐户名

  • <> >而不是映射到实际表,可以考虑在DB中创建一个视图,该视图包括该额外列。这将使你在冬眠中的生活更容易

  • 如果它仅用于显示,而不是作为实体的一部分(这意味着,该帐户名不打算成为域逻辑的一部分),我建议您将演示文稿的关注点与域模型设计分开。有一个适当的关联来考虑,并考虑做一些类似于<代码>从FooFo中选择新的FooDePosiFipe(Foo,Fo.Actudi.name),其中BababLaL< /Calp>