`

Hibernate(JPA) 多表查询结果为Object,转为自定义实体类

 
阅读更多

实体:product

@Entity

public class Product {

private String productNo;

private String name;

private String chandi;

private ProductType productType;

@Id

public String getProductNo() {

return productNo;

}

public void setProductNo(String productNo) {

this.productNo = productNo;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

 

public String getChandi() {

return chandi;

}

public void setChandi(String chandi) {

this.chandi = chandi;

}

@ManyToOne(cascade ="CascadeType.All")

@JoinColumn(name="productType_id")

public ProductType getProductType() {

return productType;

}

public void setProductType(ProductType productType) {

this.productType = productType;

}

 

}

 

 

实体类ProductType

@Entity

public class ProductType {

private String typeNo;

private String Name;

private Set<Product> products;

@Id

public String getTypeNo() {

return typeNo;

}

public void setTypeNo(String typeNo) {

this.typeNo = typeNo;

}

public String getName() {

return Name;

}

public void setName(String name) {

Name = name;

}

@OneToMany(mappedBy="productType")

public Set<Product> getProducts() {

return products;

}

public void setProducts(Set<Product> products) {

this.products = products;

}

 

}

 

如果关联查询:createQuery("select p.chandit.name from Product p left join p.productType t group by p.productType ")会返回object类型要想对实体处理可以采取如下措施:

1、增加一个类(字段名为查询的字段名,要生成对应的geter seter方法,并且一定要有构造函数,且构造函数的参数是查询的字段)

 

public class ProductAndType {

private String name;

private String chandi;

public Product(String name, String chandi) {

this.name = name;

this.chandi = chandi;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getChandi() {

return chandi;

}

public void setChandi(String chandi) {

this.chandi = chandi;

}

 

 

 

}

2、修改查询语句createQuery("select new 包名.ProductAndType( p.chandi t.name )from Product p left join p.productType t group by p.productType ")这样即可转为ProductAndType类型,可对其操作。

 

 

 

分享到:
评论

相关推荐

    JPA(hibernate) Dao 和 DaoSupport

    在JPA和Hibernate中,可以直接返回查询结果集,但如果需要定制化包装,可以自定义`QueryResult`类来实现。 综上所述,`JPA(hibernate) Dao 和 DaoSupport`涉及到Java持久化技术,主要关注如何通过面向对象的方式...

    Hibernate JPA

    - **Hibernate Annotations**: 提供对JDK 5.0注解的支持,使得开发者能够更便捷地定义实体类与数据库表之间的映射关系。 - **Hibernate EntityManager**: 实现JPA规范的核心组件,提供了符合JPA标准的接口和功能。 ...

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    - **实体类**: 使用@Entity注解标记Java类为JPA实体,并通过@Id注解指定主键字段。 - **持久化操作**: 通过EntityManager的persist()方法将新实体持久化,merge()方法更新已存在的实体,remove()方法删除实体,find...

    How to Use Hibernate JPA

    当设置为`update`时,Hibernate会根据实体类结构的变化自动更新表结构。 2. **测试自动表创建功能** - 启动应用程序,观察控制台输出确认表是否已成功创建。 #### 建立并测试 Model Facade 1. **创建 Model ...

    JPA注解 和hibernate 建表

    Hibernate是一个基于JPA规范的ORM(Object-Relational Mapping)框架,它提供了对数据库的访问和操作功能。Hibernate可以将Java对象转换为对应的数据库表记录,从而实现了数据的持久化。 四、Hibernate.cfg.xml文件...

    7. JPA - Hibernate【从零开始学Spring Boot】

    要开始使用JPA和Hibernate,你需要创建实体类,这些类代表数据库表中的记录。例如,你可以创建一个名为`User`的实体类,其中包含属性如`id`、`name`和`email`,并使用`@Entity`注解标记它。同时,使用`@Id`注解指定...

    jpa + hibernate 例子

    实体类通常是Java POJO(Plain Old Java Object),它的属性对应数据库表的字段。 2. **实体ID(Entity ID)**: 每个实体都有一个唯一的标识符,称为ID。在JPA中,通常使用`@Id`注解指定哪个字段作为主键。 3. **...

    hibernate jpa

    Hibernate是Java领域一个流行的Object-Relational Mapping (ORM)工具,而JPA是Java标准,用于在Java应用中管理关系数据库。它们一起提供了面向对象编程与关系数据库之间的桥梁,简化了数据持久化的过程。 描述提到...

    jpa 别名转实体

    在JPA中,我们经常需要处理SQL查询结果,这些结果可能包含别名,例如在HQL(Hibernate Query Language)或JPQL(Java Persistence Query Language)查询中定义的别名。别名的作用是为了使查询语句更加简洁易读,并且...

    JPA所需Hibernate3的相关包及一个JPA的Demo

    1. **实体类(Entity)**:这些是映射到数据库表的Java类,它们使用了JPA的注解,如`@Entity`, `@Table`, `@Id`, `@GeneratedValue`等。 2. **持久化单元(Persistence Unit)**:在`persistence.xml`文件中定义,...

    基于hibernate3.6的jpa例子

    接下来,定义一个Java实体类,比如`User`,它代表数据库中的一个表。实体类需要使用`@Entity`注解,并通过`@Table`指定对应的数据库表名。属性则使用`@Id`(主键)、`@GeneratedValue`(自动生成策略)等注解进行...

    hibernate多对多查询

    总之,Hibernate的多对多查询涉及实体类的定义、中间表的映射以及查询语句的编写。理解和熟练运用这些概念对于开发复杂的Java应用程序至关重要。在实际项目中,应根据业务需求灵活调整关联策略,确保数据的一致性和...

    Myeclipse自动生成Hibernate配置文件及实体类映射ORM

    Myeclipse 自动生成 Hibernate 配置文件及实体类映射 ORM 配置文件 Myeclipse 是一个功能强大的集成开发环境(IDE),它提供了许多实用的功能来简化软件开发过程。在这个示例中,我们将展示如何使用 Myeclipse 自动...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip

    在源码中,可以看到这些策略如何在`org.hibernate.mapping`包下的实体类映射中实现。 5. Transactions:JPA提供了事务管理的接口,如`Transaction`和`PersistenceContext`。源码中展示了如何与底层数据源进行交互,...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...

    spring+springMVC+jpa+hibernate框架整合

    在JPA配置中,我们需要定义实体类,这些类代表数据库中的表,并使用注解来描述它们与数据库的映射关系。Hibernate作为JPA实现,它的配置通常涉及数据库连接信息、方言选择等。一旦配置完成,我们可以通过JPA的...

    jpa之使用hibernate示例代码

    1. **实体类(Entity)**:在JPA中,实体类是Java类,代表数据库中的表。它需要使用`@Entity`注解标记,并且通常有一个主键字段,用`@Id`注解标识。例如: ```java @Entity public class User { @Id private Long ...

    使用JPA反向工程 Hibernate工程反向

    虽然JPA是标准,Hibernate是其实现,但Hibernate的反向工程提供了更多自定义选项,适合复杂的数据库结构和项目需求。在实际开发中,应根据项目规模、团队技术栈和性能需求来选择合适的反向工程工具。

    hibernate-jpa学习

    JPA允许开发者通过注解或XML配置将Java实体类与数据库表关联。与Hibernate相比,JPA更偏重于标准,而Hibernate则提供了更多的高级特性和优化。在JPA中,EntityManager是主要的接口,它类似于Hibernate的Session,...

Global site tag (gtag.js) - Google Analytics