【发布时间】:2016-09-27 09:02:29
【问题描述】:
我想在 Hibernate 表映射/实体类中添加一个字段。
我希望此字段不映射到实际的表列,并且我希望 Hibernate 不要尝试将其插入/更新到数据库。
但我希望能够通过 DAO 中的自定义选择来加载此字段,例如通过
query.addEntity(getPersistentClass().getName());
我最接近这个的方法是创建字段@Transient,
但是即使选择也不会加载其值。所以这不是
正是我需要的。
这有可能吗?如果可以,怎么做?
【问题讨论】:
-
AFAIK 瞬态是不使用 ORM 模型映射列的唯一方法。如果一个字段没有映射到数据库,那么 Hibernate 怎么可能给它赋值呢?
-
@TimBiegeleisen 我的想法是做一个 SQL 查询,例如
select t.*, 1 as Disabled from table t然后所有其他字段都来自表,我正在谈论的Disabled字段是从该查询返回的记录集的Disabled列加载的。 -
我不确定我是否理解您的问题。该字段的价值从何而来?是在数据库中还是某个公式的结果?
-
@Thomas 好的,我刚刚在评论中举了一个例子。
-
最符合您需要的方法是执行原始 SQL 查询。您正试图绕过 Hibernate 框架,在这种情况下,为什么不直接进行原始查询?