`
nannan408
  • 浏览: 1783789 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

架构师之hibernate实体注解------实体如何用setResultTransformer转换?

 
阅读更多
1.前言.
  当你用hibernate查出数据,但是类型不是原来的类型怎么办,新增的实体类还用不用,答案是可以用的.用query.setResultTransformer(Transformers.aliasToBean(AA.class));这种形式可以解决查出来的数据不能使用的问题.
2.代码
(1)查询dao
 String sql = "select USER_ID,USERNAME from test where USER_ID= :id";
        Query query = getCurrentSession().createSQLQuery(sql);//.addScalar("MODULE_ID", LongType.INSTANCE);
        query.setBigDecimal("id", new BigDecimal("1"));
        query.setResultTransformer(Transformers.aliasToBean(UserEntity.class));
        List<UserEntity> list=null;
        list=query.list();
        return list;



(2)实体类
package com.test.ljn.sample.domain;

import java.math.BigDecimal;
import java.math.BigInteger;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import com.test.ljn.base.domain.IBean;

import javax.persistence.Table;

import org.hibernate.annotations.PolymorphismType;
import org.hibernate.annotations.Polymorphism;

@Entity
@Table(name = "test_USER")
@Polymorphism(type = PolymorphismType.EXPLICIT)
public class UserEntity  implements IBean<Long> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/** 模块ID */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "USER_ID", unique = true, nullable = false)
    private BigInteger USER_ID;

    /** 父模块ID */
    @Column(name = "USERNAME")
    private String USERNAME;



	public BigInteger getUSER_ID() {
		return USER_ID;
	}

	public void setUSER_ID(BigInteger uSER_ID) {
		USER_ID = uSER_ID;
	}

	public String getUSERNAME() {
		return USERNAME;
	}

	public void setUSERNAME(String uSERNAME) {
		USERNAME = uSERNAME;
	}


    
}

3.需要注意的.
  (1)这种转换实体类很严格,必须连属性名字要和数据库字段高度一致(注解此时没很大作用用.
  (2)实体类可以比表字段少一些字段.
0
1
分享到:
评论
2 楼 锄禾dangwu 2016-03-17  
nannan408 写道
  对于3.1说的"这种转换实体类很严格,必须连属性名字要和数据库字段高度一致"只针对setResultTransformer.如果改为
Query query = getCurrentSession().createSQLQuery(sql).addEntity(UserEntity.class)


则注解生效,建议用addEntity替代setResultTransformer


最好别建议这个   这俩种用法是有区别的   你的支持全列转换    他的支持指定列集合转换  
在大数据量查询时*的效率很低的
1 楼 nannan408 2015-05-14  
  对于3.1说的"这种转换实体类很严格,必须连属性名字要和数据库字段高度一致"只针对setResultTransformer.如果改为
Query query = getCurrentSession().createSQLQuery(sql).addEntity(UserEntity.class)


则注解生效,建议用addEntity替代setResultTransformer

相关推荐

    hibernate-extensions-2.1.3.zip ,middlegen for hibernate

    结合使用Hibernate扩展和Middlegen,开发人员可以更高效地进行数据库驱动的Java应用程序开发。它们降低了代码维护的复杂性,提升了开发速度,使得开发者能够将更多的精力集中在业务需求和创新上,而非基础架构的构建...

    Hibernate-Release-4.2.3

    4. **实体生命周期管理**:Hibernate提供了对实体生命周期的精细控制,包括瞬时、持久化、托管和脱管状态,以及相应的转换方法如`persist()`, `merge()`, `remove()`等。 5. **事务管理**:支持JTA(Java ...

    架构师职能图------------

    架构师职能图----------------------------------

    hibernate-distribution-3.3.1.GA

    Hibernate 是一种开源的 ORM 解决方案,它允许开发者用面向对象的方式处理数据库交互。通过提供对象和数据库表之间的映射,Hibernate 消除了大量手动编写 SQL 和 JDBC 代码的需求,提高了开发效率和代码的可维护性...

    hibernate-release-5.0.7.Final-所有jar包

    Hibernate作为JPA的实现之一,这些jar包可能是JPA规范的核心库,如javax.persistence.*,使得开发者可以使用JPA规范编写代码,同时享受到Hibernate的强大功能。 4. **required**:这是Hibernate的必需依赖,可能...

    hibernate-validator-5.2.1.Final-dist

    《Hibernate Validator 深度解析与应用》 Hibernate Validator 是 Hibernate 社区提供的一款强大...无论是在传统的MVC架构还是现代的微服务架构中,Hibernate Validator都能发挥重要作用,成为开发者手中的得力助手。

    基于java的-129-jspm影院管理系统--LW-源码.zip

    --LW-??\`:这是项目根目录,包含了整个系统的文件。 2. `??java?-129-jspm??????--LW-??\jspmm1693\`:这应该是项目的主模块或主目录,可能是以项目编号1693命名的。 3. `??java?-129-jspm??????--LW-??\jspmm...

    Hibernate注解用法总结

    - `@Entity`: 这个注解是必不可少的,它告诉Hibernate一个Java类是一个实体,可以映射到数据库中的一个表。默认情况下,表名与实体类名相同,但可以通过`@Table`注解来指定不同的表名。 - `@Table`: 此注解用于...

    hibernate_reference-Hibernate Envers User Guide

    ### Hibernate Envers:简易实体审计指南 #### 一、引言 Hibernate Envers项目旨在为持久化类提供简便的审计功能。用户只需在希望审计的持久化类或其属性上标注`@Audited`注解即可。对于每个被审计的实体,会创建一...

    hibernate-3.0.5-api

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java应用程序中使用对象模型,而无需直接与SQL数据库交互。Hibernate通过提供一个中间层,简化了数据持久化的过程,提高了开发效率,并且减少了...

    Beginning-Hibernate-2nd-Edition.pdf

    - **软件架构师**:考虑将 Hibernate 作为项目中数据访问层的技术选型,需要全面了解其特性和应用场景。 #### 七、总结 《Beginning Hibernate 第二版》是一本非常适合初学者入门和进阶使用的 Hibernate 教程书籍...

    Spring-MVC-Hibernate-CRUD-源码.rar

    这是一个关于使用Spring MVC和Hibernate框架实现CRUD操作的源代码示例。CRUD代表创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete),是数据库操作的基本功能。Spring MVC作为Spring框架的一部分,是用于...

    struts-hibernate-integration-tutorial.zip

    Struts主要负责MVC(Model-View-Controller)架构的实现,而Hibernate则是一个强大的对象关系映射(ORM)工具,用于处理数据库操作。本教程"struts-hibernate-integration-tutorial.zip"应该是关于如何将这两个框架...

    springMVC-Hibernate-Oracle-master.zip

    【标题】"springMVC-Hibernate-Oracle-master.zip"是一个包含使用Spring MVC、Hibernate和Oracle数据库进行Web应用程序开发的示例项目的压缩包。这个项目旨在为开发者提供一个基础的参考框架,帮助他们理解和实践这...

    Linux运维-运维构架师-高级运维架构师-DAY0714期-系统自动化安装kickstart-07-ks文件语法.mp3

    Linux运维-运维构架师-高级运维架构师-DAY0714期-系统自动化安装kickstart-07-ks文件语

    Linux运维-运维构架师-高级运维架构师-DAY0714期-系统自动化安装kickstart-09-自动安装系统及.mp3

    Linux运维-运维构架师-高级运维架构师-DAY0714期-系统自动化安装kickstart-09-自动安装

    148-时间管理系统--源码.zip

    - `148-??????--??\springbootquqp0\db\`:此目录可能包含数据库相关的配置或脚本,用于初始化和管理数据库。 - `148-??????--??\springbootquqp0\mvnw`:这是Spring Boot的Maven wrapper,它允许开发者在没有全局...

    非注解Springmvc+spring+hibernate 入门实例

    在非注解方式下,你需要配置Hibernate的`hibernate.cfg.xml`文件,设置数据库连接参数,并在实体类上使用JPA的`@Entity`注解。此外,还需要创建`SessionFactory`,它是Hibernate的主要工作单元,负责创建`Session`...

Global site tag (gtag.js) - Google Analytics