我在使用Hibernate时遇到了一个小问题。
我有一堂课:

public class Clazz{
   private int idClazz;
   //getters & setters...
}


它已在Hibernate中正确映射。
我想在数据库中选择该类的所有行,但我希望idClazz字段为100 *数据库中的ID。

因此,我做了一个小的HQL查询:

daoObject.createQuery("select 100*idClazz as idClazz from Clazz");


当我从该查询中打印对象列表时,我仍然会获得“常规” ID。
我做错了什么?

谢谢你的帮助!
(ps:当然,这是一种简化的情况,我并不完全希望这样做)

最佳答案

我不知道在查询中更改ID列的值,您可能会一直坚持下去,我必须运行测试才能看到。

在我看来,像这样在加载时计算瞬态场会更安全:

@Transient
private int IDMulled;

@PostLoad
public void onPostLoad() {
    this.IDMulled = idClazz * 100;
}


另外,由于我认为您不想做的事情在JPQL中是合法的,因此可以执行如下本机SQL查询:

session.createSQLQuery("Select (idClazz * 100) as result From Clazz");

关于java - hibernate -现场操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20355458/

10-10 20:09