我可以使用hibernate而不是整个对象从连接表中提取属性

时间:2017-02-10 19:33:24

标签: java spring hibernate hibernate-mapping

我有一个名为task的java对象我想添加一个名为assigneeFullName的字符串属性,而不是引用它将被拉出的完整用户对象。 基本上我想添加类似的东西:

private String assigneeFullName;

<many-to-one name="assigneeFullName" class="string" fetch="select">
    <column name="USER.FULL_NAME join on ASSIGNEE_ID" precision="22" scale="0" />
</many-to-one>

或:

<property name="assigneeFullName" type="string">
    <column name="DUE_DT" length="7" />
</property>

而不是:

private User assignee;

<many-to-one name="assignee" class="User" 
        fetch="select">
<column name="ASSIGNEE_ID" precision="22" scale="0" /> </many-to-one>

1 个答案:

答案 0 :(得分:0)

您可以在Select子句中使用Projection或Constructor Expression在Query中执行此操作。

例如(投影)

select task, user.fullName from ... where ...

或(构造函数表达式)

select new your.project.Result(task,user.fullName) from ... where ...

投影会返回Object[]列表,其中[0]是任务实体,[1]是完整名称。

构造函数表达式将返回结果列表(您必须实现的类,并且具有适当的构造函数)。

除了使用查询之外,我不认为可以进行这样的映射。

有关构造函数表达式的更多信息,请参阅here