我试图看看@Formula注释如何使用下面的一段简单代码.

我能够打印出description和bidAmount列的值,但是使用@Formula注释的字段,即shortDescription和averageBidAmount返回null.

任何人都可以帮助指出这里的代码有什么问题吗?

我在Mac OSX上使用Hibernate 5.0,postgresql-9.3-1102-jdbc41和TestNG.

import java.math.BigDecimal;

import java.util.List;

import javax.persistence.Entity;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Persistence;

import javax.transaction.UserTransaction;

import org.testng.annotations.Test;

import com.my.hibernate.env.TransactionManagerTest;

public class DerivedPropertyDemo extends TransactionManagerTest {

@Test

public void storeLoadMessage() throws Exception {

EntityManagerFactory emf = Persistence.createEntityManagerFactory("HelloWorldPU");

try {

{

UserTransaction tx = TM.getUserTransaction();

tx.begin();

EntityManager em = emf.createEntityManager();

DerivedProperty derivedProperty1 = new DerivedProperty();

derivedProperty1.description = "Description is freaking good!!!";

derivedProperty1.bidAmount = BigDecimal.valueOf(100D);

DerivedProperty derivedProperty2 = new DerivedProperty();

derivedProperty2.description = "Description is freaking bad!!!";

derivedProperty2.bidAmount = BigDecimal.valueOf(200D);

DerivedProperty derivedProperty3 = new DerivedProperty();

derivedProperty3.description = "Description is freaking neutral!!!";

derivedProperty3.bidAmount = BigDecimal.valueOf(300D);

em.persist(derivedProperty1);

em.persist(derivedProperty2);

em.persist(derivedProperty3);

tx.commit();

for (DerivedProperty dp : getDerivedProperty(em)) {

System.out.println("============================");

System.out.println(dp.description);

System.out.println(dp.bidAmount);

System.out.println(dp.getShortDescription());

System.out.println(dp.getAverageBidAmount());

System.out.println("#############################");

}

em.close();

}

} finally {

TM.rollback();

emf.close();

}

}

public List getDerivedProperty(EntityManager em) {

List resultList = em.createQuery("from " + DerivedProperty.class.getSimpleName()).getResultList();

return resultList;

}

}

我的实体类是:

@Entity

class DerivedProperty {

@Id

@GeneratedValue

protected Long id;

protected String description;

protected BigDecimal bidAmount;

@org.hibernate.annotations.Formula("substr(description, 1, 12)")

protected String shortDescription;

@org.hibernate.annotations.Formula("(select avg(b.bidAmount) from DerivedProperty b where b.bidAmount = 200)")

protected BigDecimal averageBidAmount;

public String getShortDescription() {

return shortDescription;

}

public BigDecimal getAverageBidAmount() {

return averageBidAmount;

}

}

编辑

我正在阅读Java Persistence with Hibernate 2nd Ed.

谢谢

formula 返回list_如何在Hibernate / JPA中使用@Formula相关推荐

  1. Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释...

    转自Hibernate JPA中@Transient.@JsonIgnoreProperties.@JsonIgnore.@JsonFormat.@JsonSerialize等注解解释 1.@Tran ...

  2. Hibernate JPA中insert插入数据后自动执行select last_insert_id()解决方法

    本文出处:http://blog.csdn.net/chaijunkun/article/details/8647281,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  3. Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.@Transient @Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将 ...

  4. jpa vue管理系统_如何通过利用Java流获取类型安全和直观的Hibernate / JPA查询

    jpa vue管理系统 大部分Java数据库应用程序都在使用Hibernate / JPA来弥合Java和SQL之间的鸿沟. 直到最近,我们还被迫将Java和JPQL混合使用,或者使用复杂的命令式标准 ...

  5. hibernate 或jpa 中使用 AliasToBeanResultTransformer 自定义类型转换ResultTransformer 下划线转驼峰...

    jpa中使用 sql查询时,返回结果直接转为实体bean的实现, 需要自定义一个ResultTransformer,如下, import java.util.Arrays;import org.apa ...

  6. 如何在Hibernate中维护表的历史记录

    为了维护数据库的历史记录或跟踪数据库表行的修改,我们创建了一个版本表,其中包含与原始表相同的字段.每当原始表被更改时,我们都会在版本表中创建另一个条目. 因此,对于每个更新查询,我们都必须在版本表中编 ...

  7. android中的后退功能,如何在Android应用中实现一个返回键功能

    如何在Android应用中实现一个返回键功能 发布时间:2020-11-23 16:28:56 来源:亿速云 阅读:89 作者:Leah 今天就跟大家聊聊有关如何在Android应用中实现一个返回键功 ...

  8. hibernate mysql 外键_如何在hibernate中设置关联会在数据库中生成外键

    hibernate学习笔记(三) hibernate的一些杂记:1.sessionFactory的用法:SessionFactory是线程安全的,构造 SessionFactory 很消耗资源sess ...

  9. Stackoverflow热门问题(二十二)-如何在Windows cmd中得到程序返回值?

    文章首发及后续更新:https://mwhls.top/2873.html 新的更新内容请到mwhls.top查看. 无图/无目录/格式错误/更多相关请到上方的文章首发页面查看. stackoverf ...

  10. java实体外键_如何在JPA中添加用户实体和好友关系实体的外键

    现有用户实体,相关代码如下: @Entity @Table(name = "t_users") public class User extends Model { @Id @Col ...

最新文章

  1. java校验字符串是否为json格式
  2. linux 病毒脚本,解析常见的Linux病毒
  3. poi读取Excel内容数据
  4. 区块链成熟度评测报告
  5. 【数据竞赛】可能是全网特征工程实操最通透的...
  6. 二叉树的层次遍历_【腾讯面试热身题】二叉树层次遍历(动画展示)
  7. php删除文件代码指定,PHP删除指定文件夹所有文件代码
  8. 前端如何查看音频的长度_Android音频可视化
  9. centos 添加路由命令_详解CentOS 6.4 添加永久静态路由所有方法汇总
  10. 【文末福利】500行代码,教你用python写个微信飞机大战
  11. 创建多线程(8种方式)
  12. GLSL 创建自己的着色器
  13. JSONP实现跨域(9种跨域方案)
  14. 新能力 | 云开发CMS内容管理系统,5分钟搞定小程序管理后台
  15. Unity 将3D物体的世界坐标转换为对应的屏幕坐标
  16. 作业1:小型考勤登记表
  17. Java多线程篇--原子包、阻塞队列和并行流
  18. 写在2021的尾巴上
  19. 使用云呐统一运维一体机降低运维数据中心的运营成本
  20. 室内定位算法_【好设计论文】基于行人航迹推算的室内定位算法研究

热门文章

  1. android缓存清理代码,安卓缓存清除和计算
  2. 一般学校计算机密码是什么,学校电脑密码忘了怎么解?
  3. 关于ETF的套利机制
  4. ZOJ 3551 Bloodsucker(概率dp)
  5. equal和==区别详解
  6. [MOT学习笔记]JDE损失函数详解
  7. java对象的封装继承和多肽_java零基础入门第七天 继承 多肽 重写 重载
  8. 用python的turtle库画个笑脸(附代码)
  9. Android开发什么该做、什么不该做,你真的知道吗?
  10. 全文检索服务 _ ElasticSearch