• Hibernate @Formula 注解方式


    1.Formula的作用

      Formula的作用就是用一个查询语句动态的生成一个类的属性

      就是一条select count(*)...构成的虚拟列,而不是存储在数据库里的一个字段。用比较标准的说法就是:有时候,你想让数据库,而非JVM,来替你完成一些计算,也可能想创建某种虚拟列,你可以使用sql片段,而不是将属性映射(物理)列。这种属性是只读的(属性值由公式求得).Formula甚至可以包含sql子查询

    2.Formula的使用

    package aa;
    
    import static javax.persistence.GenerationType.IDENTITY;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    import org.hibernate.annotations.Formula;
    
    /**
     * 注解必须是在属性上的,如果有任何一个注解在方法上,那么@Formula将失效
     * @author 昆明蜂鸟软件
     * @version 0.1.0 2008-7-15 下午06:09:38
     */
    @Entity
    @Table(name = "user", catalog = "test")
    public class User {
        
        @Id
        @GeneratedValue(strategy = IDENTITY)
        private int id;
    
        @Formula("(select COUNT(*) from user)")
        private int count;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public int getCount() {
            return count;
        }
    
        public void setCount(int count) {
            this.count = count;
        }
    }

    另在@Formula可以直接使用本模型类中的属性取值

        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(generator="paymentableGenerator")
        @GenericGenerator(name="paymentableGenerator",strategy="uuid")
        @Column(name="idStr")
        private String idStr;
        @Column(name="title")
        private String title;
        @Column(name="abstracts")
        private String abstracts;
        @Column(name="content")
        private String content;
        @Column(name="author")
        private String author;
        @Column(name="img_url")
        private String img_url;
        @Column(name="release_date")
        private Date release_date;
        @Column(name="status")
        private String status;
        @Column(name="status_date")
        private Date status_date;
        
        @Formula("(select count(*) from qe_topic qt where qt.object_type = '3' and qt.object_id=idStr )")  
        private int topicCount;//评论数量

    其中的idStr为当前类中的idStr

  • 相关阅读:
    手摸手带你用Hexo撸博客(三)之添加评论系统
    手摸手带你用Hexo撸博客(二)之配置主题
    手摸手带你用Hexo撸博客(一)
    vue3和vue2生命周期的对比
    如何根据key合并数组中的对象
    webpack之require.context实现前端工程自动化
    js常用方法封装
    首页
    CentOS7安装MySQL8
    印象笔记代码高亮最完美解决方式
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4667697.html
Copyright © 2020-2023  润新知