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

时间: 2024-12-07 06:25:24

Hibernate @Formula 注解方式的相关文章

hibernate annotation注解方式来处理映射关系

在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包. 一.单对象操作 @Entity

hibernate中注解方式中的控制反转

都知道hibernate用xml方式配置关系时(one-to-many,many-to-many)可以添加控制反转属性 inverse=false(默认) 即将两表之间的关系交给对方来维护. inverse=true表示本方不维护关系,有对方维护关系 但是需注意的是,one-to-one关系是没有控制反转的,只能交由外键来维护关系. 从而导致在设置关系时,只能有外键方设置,移除关系时,只能从外键方来解除关系,删除记录时,只能先删外键方,在删主键方(save,remove,delete) 如果有控

Hibernate基于注解方式的各种映射全面总结

1. 使用Hibernate Annotation来做对象关系映射 1) 添加必须包: hibernate-jpa-2.0-api-1.0.0.Final.jar 2) 在实体类中添加JPA的标准注解来进行对象关系映射.注解可以添加在属性上,也可以添加在getXxx()方法之上. a) @Entity 映射一个实体类 @Table 指定关联的表 b) @Id 映射OID c) @GeneratedValue 指定OID的生成策略 d) @Version 映射版本号属性 e) @Column 指定

hibernate 用注解方式生成uuid方法

//配置uuid,本来jpa是不支持uuid的,但借用hibernate的方法可以实现. @GeneratedValue(generator = "uuid") @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid", strategy = "uuid") 加在id的get方法上面 下面具体操作下: 1.同样的 先新建一个java project.

2.2、Hibernate用注解方式实现一对多、多对多关系

一.一对多关系 1.在上一篇日志中用.xml配置文件项目基础上,再往lib目录先添加一个包-hibernate-jpa-2.0-api-1.0.0.Final.jar 2.新建一个com.st.bean4 包,往包里面添加两个含有注解的类: a).DeptBean2类: 1 package com.st.bean4; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 7 import javax.persistence.Colum

hibernate注解方式来处理映射关系

在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包. 一.单对象操作 @Entity

【Hibernate学习笔记-5】@Formula注解的使用

ORM映射关系:注解方式 package org.crazyit.app.domain; import javax.persistence.*; import org.hibernate.annotations.Formula; @Entity(name="news_inf") public class News { // 消息类的标识属性 @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id;

spring与hibernate整合配置基于Annotation注解方式管理实务

1.配置数据源 数据库连接基本信息存放到properties文件中,因此先加载properties文件 1 <!-- jdbc连接信息 --> 2 <context:property-placeholder 3 location="classpath:io/shuqi/ssh/spring/transactionalAnnotation/jdbc.properties"/> 使用DBCP数据源配置xml如下 1 <!-- dbcp数据源配置 -->

hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)

绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xml文件 和 注解方式 来自动生成数据表 其中只是整了spring.hibernate,struts部分没有整.也就是说我只是测试了能够自动生成数据表(自动生成为"标准",自认为是对的......) 下面是配置和代码: 使用工具:myeclipse 2014 ,其中web project项目