`
longgangbai
  • 浏览: 7330870 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JPA 中注解一个父类中多个子类实现查询部分子类方法解决方法

 
阅读更多

  父类:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DTYPE", discriminatorType = DiscriminatorType.STRING)
public class SettleBill extends PersistenceSupport {

 

子类:

@Entity
@DiscriminatorValue("SupplierVacationBill")
public class SupplierVacationBill extends SettleBill ;

 

@Entity
@GenericGenerator(name = "seq_gen", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {@Parameter(name = "sequence_name", value = "seq_SupplierFlightBill"), @Parameter(name = "initial_value", value = "100000")})
public class SupplierFlightBill extends SettleBill;

 

 

@Entity
@GenericGenerator(name = "seq_gen", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {@Parameter(name = "sequence_name", value = "seq_SupplierHotelBill"), @Parameter(name = "initial_value", value = "100000")})
public class SupplierHotelBill extends SettleBill;

 

@Entity
@GenericGenerator(name = "seq_gen", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {@Parameter(name = "sequence_name", value = "SEQ_SETTLE_BILL"), @Parameter(name = "initial_value", value = "100000")})
public class SameTradeFlightBill extends SettleBill;

 

 

查询其中SupplierFlightBill ,SupplierHotelBill ,SupplierVacationBill  但是不查询SameTradeFlightBill 一次性查询:

本人解决方案:

 DynamicQuery dquery = new DynamicQuery(" select distinct  vb from " + searchCondition.getForTypeName() + " vb ");

 

// 设置查询的辨别列名称
    dquery.append("and (");
    dquery.append(" vb.class=SupplierFlightBill or vb.class=SupplierHotelBill or vb.class=SupplierVacationBill ");
    dquery.append(" )");

 

 

 

请问高人有没有更简单的解决方案!本人认为自己的解决方案不够好!希望给出解决方案!!

 

分享到:
评论

相关推荐

    JPA批注参考(主要介绍JPA中的相关注解)

    - **`@MappedSuperclass`**:用于标记一个超类,该超类不会被映射为数据库表,但其子类会被映射。 通过上述批注,开发者可以灵活地定制 JPA 行为,从而更好地满足应用程序的需求。例如,通过使用 `@Table` 注解可以...

    jpa/hibernate继承注解

    在联合表继承中,每个子类都有自己的独立表,同时还有一个公共的父类表。使用`@Inheritance(strategy = InheritanceType.JOINED)`来声明此策略。子类属性被存储在其各自的表中,而共享的属性则在父类表中。子类与...

    JPA注解参考文档.txt

    ### JPA注解参考知识点详解 #### 一、引言 Java Persistence API(简称JPA)作为Java企业版5(Java EE 5)标准的一部分,是Enterprise JavaBeans(EJB)3.0规范的重要组成部分。它极大地简化了EJB持久化,并提供了...

    JPA 实现继承关系

    在Java中,继承是面向对象编程的一个核心概念,允许一个类(子类)继承另一个类(父类)的属性和方法。在JPA中,继承同样被支持,以便将数据库表结构映射到类的继承层次结构。JPA提供了三种继承策略来处理继承关系:...

    JPA中的一对一双向关联

    下面将详细介绍JPA中一对一双向关联的概念、配置、实现方法以及其在实际开发中的应用。 一、一对一双向关联概念 一对一双向关联是指在一个实体类中有一个字段指向另一个实体类,同时在另一个实体类中也有一个字段...

    jpa实现数据库操作

    - **表格-per-hierarchy(Table-per-Hierarchy)**: 所有子类和父类信息存储在一个表中,使用一个字段区分类型。 8. **Spring与JPA的整合** - Spring Data JPA简化了JPA的使用,提供了Repository接口,通过简单的...

    JPA标签(注解)详细说明

    Java 持续性API(JPA)是Java平台上的一个规范,用于处理对象关系映射(ORM),它简化了企业级Java应用中对数据库的访问。JPA允许开发者使用面向对象的编程模型来操作数据库,而无需深入理解底层的SQL语法。在JPA中...

    jpa例子jpajpa

    8. **多态性(Polymorphism)**: JPA支持继承和多态性,使得你可以定义一个基类,然后多个子类继承它并有自己的数据库表。 在"apache-openjpa-1.2.0-source"这个压缩包中,包含了Apache OpenJPA项目的源代码。Open...

    JPA框架新技术: 注解

    同样,如果希望两个类的属性生成同一个数据表,可以在一个类中使用`@Embedded`注解嵌入另一个类。 5. **实现类继承**,在父类上使用`@MappedSuperclass`注解,并将所有属性的可见性设为`protected`,可以使子类继承...

    Hibernate 注解一对多,多对一

    `@ManyToOne`注解用于表示一个实体类(子类)与另一个实体类(父类)之间的多对一关系,即一个子类实例可以对应一个父类实例。回到前面的例子,每个员工都有一个所属的部门,员工是子类,部门是父类。 配置`@...

    JPA注解参考

    ### JPA注解详解:构建高效数据库映射与操作 #### 概述 JPA(Java Persistence API)作为Java EE 5(Java Platform, Enterprise Edition)标准的一部分,为EJB 3.0提供了对象关系映射(ORM)的能力。它不仅简化了...

    @TypeDiscriminator注解实现多态对象的查询,jackson @JsonTypeInfo注解实现controller多态支持

    当我们有一个基类和多个子类,并且希望在数据库中存储这些子类实例时,这个注解就非常有用。例如,假设我们有`Animal`基类和`Dog`、`Cat`两个子类,`@TypeDiscriminator`可以让我们指定一个字段(如"type")来区分...

    java程序使用JPA注解详解.zip

    Java持久化API(Java Persistence API,简称JPA)是Java平台上的一个标准,用于管理和持久化应用程序中的对象。它提供了一种将业务对象与数据库表之间的映射关系进行声明的方式,使得开发者无需编写大量的SQL语句,...

    使用jpa映射关联和继承

    3. **多对一(ManyToOne)映射**:多个子对象对应一个父对象,与一对一相反,通过`@ManyToOne`注解实现。同样可设置`fetch`策略和`@JoinColumn`来定义外键。 4. **多对多(ManyToMany)映射**:一个实体可以与多个...

    JPA注解帮助文档

    ### JPA注解详解 #### 一、概述 Java Persistence API (JPA) 是 Java 社区标准 JSR-317 的一部分,它提供了一种面向对象的方式来处理数据库操作,极大地方便了 Java 应用程序对关系数据库的操作。JPA 主要包括两个...

    JPA2映射的神秘之旅

    嵌入映射涉及到将多个实体字段嵌入到一个单独的表中,使用@Embedded和@Embeddable注解实现。这在多个实体共享一些公共属性时非常有用,如地址信息可以嵌入到多个实体中。 派生标识映射是通过主控关系的外键来派生...

    JPA 标注 JPA标签手册

    以下是JPA注解的一些主要类别和它们的描述: 1. **实体(Entities)**: - `@Entity`:用于标识一个Java类为JPA实体。 - `@Table`:定义实体映射到的数据库表名。 - `@Id`:标识实体类中的主键字段。 - `@...

    JPA.rar_jpa

    5. **多态性(Polymorphism)**:支持继承和多态,允许在一个父类下定义多个子类实体。 综上所述,JPA是Java开发中处理数据库数据的重要工具,通过其提供的API和特性,开发者能够更高效、灵活地管理和操作数据库,...

Global site tag (gtag.js) - Google Analytics