formula 可以利用SQL语动态的生成java属性(实体要存在相应的属性)
规则是 在from后边必须是表名,
当有where条件时必须有别名,以便调用
和虚拟列的差别是 虚拟列只能在调用本类中的数据,而formula还可以调用别的表中的数据
这个是一个非常好用而且非常实用的属性。
如果你希望查询一些数据库中没有的此列的数据,如:截取字符串,或链接字符串或者一些求值函数(sum,average,max)等等。你可以不需要像以往在程序里做了,在配置文件里我们可以直接完成这些操作。
我的数据库里有三个字段 uId(主键),uFirst(字段一),uSecond(字段二)
我的POJO
view plaincopy to clipboardprint?
01.public class Users {
02.
03. private int uid;
04.
05. private String ufirst;
06.
07. private String usecond;
08.
09. private String uinfo;
10. public String getUinfo() {
11. return uinfo;
12. }
13. public void setUinfo(String uinfo) {
14. this.uinfo = uinfo;
15. }
16. public int getUid() {
17. return uid;
18. }
19. public void setUid(int uid) {
20. this.uid = uid;
21. }
22. public String getUfirst() {
23. return ufirst;
24. }
25. public void setUfirst(String ufirst) {
26. this.ufirst = ufirst;
27. }
28. public String getUsecond() {
29. return usecond;
30. }
31. public void setUsecond(String usecond) {
32. this.usecond = usecond;
33. }
34.}
比如我配置文件是这样配置的
view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?>
02. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
03. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
04. <!--
05. Mapping file autogenerated by MyEclipse Persistence Tools
06. -->
07. <hibernate-mapping>
08. <class name="domain.Users" table="users" catalog="blogs">
09. <id name="uid" type="java.lang.Integer">
10. <column name="uId" />
11. <generator class="native" />
12. </id>
13. <property name="ufirst" type="java.lang.String">
14. <column name="uFirst" />
15. </property>
16. <property name="usecond" type="java.lang.String">
17. <column name="uSecond" />
18. </property>
19. <property generated="insert" name="uinfo" formula="(select concat(u.uFirst,u.uSecnod) from users u where u.uId = uid)"/>
20. </class>
21.</hibernate-mapping>
配置文件中的属性uinfo在数据库里是不存在的,但是我们要用到一些功能比如我要在插入的时候把第一个字段和第二个字段链接起来,那我们就可以在我们的hibernate mapping文件里使用公式以上的公式.
那我们的操作类里怎么写呢。
view plaincopy to clipboardprint?
01.Users u = new Users();
02.u.setUfirst("sasa4");
03.u.setUsecond("123456");
04.Transaction tran = session.beginTransaction();
05.session.save(u);
06.tran.commit();
07.//下面将可以取道我们的公式运行完返回值
08.System.out.println(u.getUinfo());
注意: 1 formula="(sqlStr)" 的格式不能变,标点也不能少。
2 formula公式里的字段都是数据库里的字段名,除了查询条件参数是要和配置文件里的字段匹配。
分享到:
相关推荐
2.4. Hibernate独有的注解扩展:除了标准的EJB3注解,Hibernate还提供了一些自定义注解,如`@GeneratedValue`用于设置主键生成策略,`@Formula`用于在属性中使用SQL表达式,`@Cache`用于配置缓存,`@Filter`用于动态...
5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次...
在Java实体类中使用`@Formula`注解,通常会结合JPA或Hibernate等ORM框架。下面通过一个具体的例子来说明如何使用`@Formula`: ```java @Entity public class News { private int id; private String title; ...
在 Hibernate 中使用注解可以极大地提高开发效率,减少配置工作量,并使得代码更加清晰易读。 #### 核心注解解析 ##### @Entity 此注解用于标记一个 Java 类作为持久化实体。它告诉 Hibernate 这个类将被映射到...
5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次...
5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次...
5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次映射同一个...
《Hibernate Annotations中文帮助文档》是针对Java开发人员的一份详细指南,主要讲解如何使用Hibernate ORM框架中的注解来实现数据库对象的映射。该文档涵盖了从基础到高级的各种概念,帮助开发者更高效地管理和操作...
《Hibernate Annotations 中文帮助文档》提供了关于如何在Java应用程序中使用Hibernate ORM框架进行数据库映射的详细指南。Hibernate Annotations是Hibernate框架的一部分,它允许开发者使用Java注解来定义对象关系...
在创建一个使用 Hibernate 注解的项目之前,需要满足一定的系统环境需求,例如支持 Java 的开发环境、JDK 版本、支持 Hibernate 的应用服务器等。 ##### 1.2 系统配置 为了使 Hibernate 正常运行,还需要进行相应的...
- **无注解之属性的默认值:** 如果没有显式使用注解,Hibernate会默认将类的属性映射到表中的列。 - **映射主键属性:** 主键映射通过`@Id`注解实现。 - **映射继承关系:** - **每个类一张表:** 每个子类对应...
本文档主要介绍了使用Hibernate进行注解式开发的方法,并且针对Hibernate的基本使用及其配置进行了详尽的解释。Hibernate作为一个流行的Java持久层框架,提供了对象关系映射(ORM)的功能,使得Java应用程序能够更加...
5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次...
- **1.2.4 值类型的集合**:讨论如何在 Hibernate 中使用集合来表示复杂的数据结构,如 List 或 Set。 - **1.2.5 双向关联**:介绍如何建立和维护对象间的双向引用关系。 - **1.2.6 使双向连起来**:进一步说明如何...
6. **注解与XML的混合使用**:尽管Hibernate Annotations鼓励使用注解来简化映射配置,但开发者仍然可以在项目中灵活地结合使用注解和XML配置。当某些映射配置用注解难以表达时,仍然可以使用XML来完成。 7. **持久...
5.1.19. 字段和规则元素(column and formula elements) 5.1.20. 引用(import) 5.1.21. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. SQL中引号包围...
- **Single Table per Class Hierarchy Strategy**(单一表继承): `<subclass>` 元素在Hibernate中使用。所有父类和子类属性都映射到同一个表中,它们的实例通过一个辨别符列来区分。 - **Joined Subclass Strategy...
- **公式**:使用 `@Formula` 注解来定义计算属性。 - **类型**:使用 `@Type` 注解来指定自定义类型。 - **索引**:使用 `@Index` 注解来定义索引。 - **继承**:使用 `@Inheritance` 注解来定义继承策略。 - **...
- **@Formula**:用于根据表中的其他字段计算出一个新字段的值。 - **@Version**:用于实现乐观锁。 - **@Transient**:用于指定某个字段不被持久化。 #### 七、注解配置与实体类映射关系 在Hibernate注解式开发中...