首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JPA继承问题,为什么生成的查询在wildfly10和jboss7之间不同

JPA(Java Persistence API)是Java持久化规范,用于将Java对象持久化到数据库中。在JPA中,继承关系是一个常见的问题,特别是在不同的应用服务器(如wildfly10和jboss7)之间可能会出现生成查询不同的情况。下面是对这个问题的完善且全面的答案:

继承问题是指在JPA中,当实体类之间存在继承关系时,生成的查询在不同的应用服务器之间可能会有差异。这是因为不同的应用服务器可能使用不同的JPA实现,或者使用不同的配置参数,导致生成的查询语句不同。

在JPA中,继承关系可以通过三种方式来实现:单表继承、表格继承和混合继承。这些继承策略决定了实体类在数据库中的映射方式,以及生成的查询语句。

  1. 单表继承(Single Table Inheritance):所有的实体类都映射到同一个数据库表中,通过一个类型字段来区分不同的实体类。这种继承策略生成的查询语句相对简单,但当实体类较多时,表的字段可能会很冗余。
  2. 表格继承(Table Per Class Inheritance):每个实体类都映射到独立的数据库表中,子类表包含了父类表的所有字段。这种继承策略生成的查询语句相对复杂,但表的结构更加规范。
  3. 混合继承(Joined Inheritance):每个实体类都映射到独立的数据库表中,子类表只包含了子类特有的字段,通过外键关联到父类表。这种继承策略生成的查询语句相对复杂,但表的结构更加规范,查询性能也较好。

在wildfly10和jboss7之间生成查询不同的原因可能有以下几点:

  1. JPA实现版本不同:wildfly10和jboss7可能使用了不同版本的JPA实现,不同版本的JPA实现可能对继承关系的处理方式有所差异,导致生成的查询语句不同。
  2. 配置参数不同:wildfly10和jboss7可能使用了不同的配置参数,如继承策略、表名生成规则等,这些配置参数的不同也会导致生成的查询语句不同。
  3. 应用服务器差异:wildfly10和jboss7是不同的应用服务器,它们可能对JPA规范的实现方式有所差异,这也会导致生成的查询语句不同。

针对这个问题,可以通过以下方式解决:

  1. 确保使用相同的JPA实现版本:在wildfly10和jboss7中都使用相同版本的JPA实现,可以减少生成查询不同的可能性。
  2. 统一配置参数:在wildfly10和jboss7中使用相同的配置参数,特别是继承策略、表名生成规则等,可以保持生成的查询语句一致。
  3. 调整应用服务器配置:如果wildfly10和jboss7的配置差异较大,可以尝试调整应用服务器的配置,使其在处理继承关系时更加一致。

总结起来,JPA继承问题是指在不同的应用服务器中生成的查询语句不同的情况。这可能是由于JPA实现版本、配置参数和应用服务器差异等原因导致的。为了解决这个问题,需要统一JPA实现版本、配置参数,并可能需要调整应用服务器的配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SpringDataJPA 系列之 JPA 简介

对象关系数据是业务实体两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中对象之间存在关联继承关系,而在数据库中,关系数据无法直接表达多对多关联继承关系。...1.2 JPA 简介 1.2.1 概述   我们都知道不同数据库厂商都有自己实现类,后来统一规范也就有了数据库驱动, Java 操作数据库时候,底层使用其实是 JDBC,而 JDBC 是一组操作不同数据库规范...开发企业应用能够经过少量修改就能够不同 JPA 框架下运行。...JPA 基于非侵入式原则设计,因此可以很容易其它框架或者容器集成 ☞ 查询能力   JPA 查询语言是面向对象而非面向数据库,它以面向对象自然语法构造查询语句,可以看成是 Hibernate...☞ 高级特性   JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性关系数据库持久化

4.4K20

ORM Spring Data Jpa

什么是ORM 即Object-Relationl Mapping,它作用是关系型数据库对象之间作一个映射,这样,我们具体操作数据库时候,就不需要再去复杂SQL语句打交道,只要像平时操作对象一样操作它就可以了...为什么要做持久化ORM设计(重要) 目前企业应用系统设计中,MVC,即 Model(模型)- View(视图)- Control(控制)为主要系统架构模式。...JPA优势 标准化: 提供相同 API,这保证了基于JPA 开发企业应用能够经过少量修改就能够不同 JPA 框架下运行。...支持面向对象高级特性: JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,最大限度使用面向对象模型 5....JPQL 是一种 SQL 非常类似的中间性对象化查询语言,它最终会被编译成针对不同底层数据库 SQL 查询,从而屏蔽不同数据库差异。

3.4K30
  • 干货|一文读懂 Spring Data Jpa

    其实这个话题松哥以前零零散散介绍过,书里也有介绍过,但是公众号中还没大伙聊过,因此本文就和大家来仔细聊聊 Spring Data Jpa! 故事主角 Jpa 1....JPA优势 标准化: 提供相同 API,这保证了基于JPA 开发企业应用能够经过少量修改就能够不同 JPA 框架下运行。...支持面向对象高级特性: JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,最大限度使用面向对象模型 5....JPQL 是一种 SQL 非常类似的中间性对象化查询语言,它最终会被编译成针对不同底层数据库 SQL 查询,从而屏蔽不同数据库差异。...3.查询方法流程解析 为什么写上方法名,JPA就知道你想干嘛了呢?

    2.8K20

    浅谈JPA优缺点_sql优点

    总的来说,JPA包括以下3方面的技术: ORM映射元数据,JPA支持XMLJDK 5.0注解两种元数据形式,元数据描述对象之间映射关系,框架据此将实体对象持久化到数据库表中; JPAAPI,...性能问题 采用JDBC编程,很多时候存在效率低下问题。例如程序将向后台数据库发送1000次SQL语句执行请求,运行效率较低。...如下特点: 标准化 JPA 是 JCP 组织发布 Java EE 标准之一,因此任何声称符合 JPA 标准框架都遵循同样架构,提供相同访问 API,这保证了基于JPA开发企业应用能够经过少量修改就能够不同...简单易用,集成方便 JPA主要目标之一就是提供更加简单编程模型:JPA框架下创建实体创建Java 类一样简单,没有任何约束限制,只需要使用 javax.persistence.Entity...支持面向对象高级特性 JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性关系数据库持久化

    1.7K20

    Spring Boot2 系列教程(二十三)理解 Spring Data Jpa

    其实这个话题松哥以前零零散散介绍过,书里也有介绍过,但是公众号中还没大伙聊过,因此本文就和大家来仔细聊聊 Spring Data Jpa! 本文大纲: ? 1....EclipseLink 1.1.4 JPA 优势 标准化: 提供相同 API,这保证了基于 JPA 开发企业应用能够经过少量修改就能够不同 JPA 框架下运行。...支持面向对象高级特性: JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,最大限度使用面向对象模型 1.1.5 JPA 包含技术 ORM 映射元数据:JPA 支持 XML...JPQL 是一种 SQL 非常类似的中间性对象化查询语言,它最终会被编译成针对不同底层数据库 SQL 查询,从而屏蔽不同数据库差异。...2.2.3.3 查询方法流程解析 为什么写上方法名,JPA就知道你想干嘛了呢?

    2K10

    Spring Data JPA 就是这么简单

    java 操作实体类时候能达到操作数据库中表效果(不用写sql ,就可以达到效果),jpa 实现思想即是 ORM (Object Relation Mapping),对象关系映射,用于关系型数据库业务实体对象之间作一个映射...使用上述实体类注解,当运行项目的时候就会在数据库中生成一个表名是 stu 表。 类继承分析 下面来研究一下类之间存在继承关系时候,jpa 又是如何处理继承关系呢?...大致总结继承这块有这样三种情况: 多类一表:多个类之间属性相同,唯一区别就是类型上差异(类名不同),这个时候我们可以为这个共同属性类建立一个父类,只让父类应射到数据库。...类之间关系分析 在数据库当中表之间都是有一定关联关系jpa 是如何在实体类之间建立和数据库表中类似的关联关系呢?...小结:类之间关系 jpa 中很重要,务必要搞清楚,以上展示代码可参考个人仓库 https://github.com/kickcodeman/spring-data-jpa,可以 clone 下来

    6.9K50

    持久层框架JPA与Mybatis该如何选型

    图中蓝色线条为Mybatis搜索量,绿色为JPA搜索量。如果你换一个国外搜索指数,你会得到一个完全不同结果。那么这是为什么呢?...所谓动态SQL就是:根据传入参数条件不同,构造不同SQL,很多比较这两个框架文章都忽略了动态SQL问题,这方面Mybatis支持更好。...说完以上几点,Mybatis为什么国内会有如此多使用者及使用厂商就不难理解了。Mybatis还可以使用如:Mybatis-plus或者代码自动生成来弥补易用性上不足。...四、框架对比选型 对比项 Spring Data JPA Mybatis 单表操作方式 只需继承,代码量极少,非常方便。...这个技术选型国内通常是Mybatis。 如果你们公司管理非常规范,微服务落地经验也非常成熟,可以考虑团队项目中使用JPA。少用或不用关联查询。 喜欢 (5)or分享 (0)

    2K41

    再见 MyBatis!我选择 JDBCTemplate!

    不管是hibernate还是jpa,表之间连接查询,被映射为实体类之间关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...后来JOOQEbean,基本上继承了QueryDSL思路,Ebean基本上还是JPA风格ORM框架,虽然也支持SQL,但不清楚其DSL特性是否支持SQL语句编写,官网上看到例子都是用于构造JPQL...Ebean,需要了解复杂JPA概念各种奇异限制,JOOQ编写就是普通SQL语句,只是把查询结果填充到实体类中(严格说JOOQ没有实体类,只是自动生成Record对象),JOOQ甚至不一定要把结果转换为实体类...三、跨数据库移植 HibernateJPA使用hqlJPQL这类数据库无关中间语言描述查询,可以不同数据库中无缝移植,移植到一个SQL有巨大差别的数据库通常不需要修改代码或者只需要修改很少代码...JOOQ根据目标数据库转换SQL语句特性,使得不同数据库之间移植时候,只需要修改很少代码,明显优于MyBatis。

    2.8K40

    放弃 MyBatis、JPA,我最终选择了 JDBC Template!真香!!

    不管是hibernate还是jpa,表之间连接查询,被映射为实体类之间关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...后来JOOQEbean,基本上继承了QueryDSL思路,Ebean基本上还是JPA风格ORM框架,虽然也支持SQL,但不清楚其DSL特性是否支持SQL语句编写,官网上看到例子都是用于构造JPQL...Ebean,需要了解复杂JPA概念各种奇异限制,JOOQ编写就是普通SQL语句,只是把查询结果填充到实体类中(严格说JOOQ没有实体类,只是自动生成Record对象),JOOQ甚至不一定要把结果转换为实体类...三、跨数据库移植 HibernateJPA使用hqlJPQL这类数据库无关中间语言描述查询,可以不同数据库中无缝移植,移植到一个SQL有巨大差别的数据库通常不需要修改代码或者只需要修改很少代码...JOOQ根据目标数据库转换SQL语句特性,使得不同数据库之间移植时候,只需要修改很少代码,明显优于MyBatis。

    3.3K10

    放弃MyBatis!我选择 JDBCTemplate!

    不管是hibernate还是jpa,表之间连接查询,被映射为实体类之间关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...后来JOOQEbean,基本上继承了QueryDSL思路,Ebean基本上还是JPA风格ORM框架,虽然也支持SQL,但不清楚其DSL特性是否支持SQL语句编写,官网上看到例子都是用于构造JPQL...Ebean,需要了解复杂JPA概念各种奇异限制,JOOQ编写就是普通SQL语句,只是把查询结果填充到实体类中(严格说JOOQ没有实体类,只是自动生成Record对象),JOOQ甚至不一定要把结果转换为实体类...三、跨数据库移植 HibernateJPA使用hqlJPQL这类数据库无关中间语言描述查询,可以不同数据库中无缝移植,移植到一个SQL有巨大差别的数据库通常不需要修改代码或者只需要修改很少代码...JOOQ根据目标数据库转换SQL语句特性,使得不同数据库之间移植时候,只需要修改很少代码,明显优于MyBatis。

    13010

    再见!Mybatis,你好!JDBCTemplate

    不管是hibernate还是jpa,表之间连接查询,被映射为实体类之间关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...后来JOOQEbean,基本上继承了QueryDSL思路,Ebean基本上还是JPA风格ORM框架,虽然也支持SQL,但不清楚其DSL特性是否支持SQL语句编写,官网上看到例子都是用于构造JPQL...Ebean,需要了解复杂JPA概念各种奇异限制,JOOQ编写就是普通SQL语句,只是把查询结果填充到实体类中(严格说JOOQ没有实体类,只是自动生成Record对象),JOOQ甚至不一定要把结果转换为实体类...三、跨数据库移植 HibernateJPA使用hqlJPQL这类数据库无关中间语言描述查询,可以不同数据库中无缝移植,移植到一个SQL有巨大差别的数据库通常不需要修改代码或者只需要修改很少代码...JOOQ根据目标数据库转换SQL语句特性,使得不同数据库之间移植时候,只需要修改很少代码,明显优于MyBatis。

    3.9K10

    SpringDataJPA 系列之快速入门

    ) 完成操作,这样切换不同 ORM 框架时提供了极大方便,同时也使数据库层操作更加简单,方便解耦 ?...1.1.2 SpringDataJPA 与 JPA hibernate 之间关系   JPA 是一套规范,内部是有接口抽象类组成。...hibernate 是一套成熟 ORM 框架,而且 Hibernate 实现了 JPA 规范,所以也可以称 hibernate 为 JPA 一种实现方式,我们使用 JPA API 编程,意味着站在更高角度上看待问题...一般我们会继承 JpaRepository JpaSpecificationExecutor 接口,我们可以使用接口中定义方法进行查询。   ...只需要按照 SpringDataJPA 提供方法命名规则定义方法名称,就可以完成查询工作。SpringDataJPA 程序执行时候会根据方法名称进行解析,并自动生成查询语句进行查询

    1.6K30

    SpringBoot教程(十二) | SpringBoot集成JPA

    优势: 标准化 JPA 是 JCP 组织发布 Java EE 标准之一,因此任何声称符合 JPA 标准框架都遵循同样架构,提供相同访问API,这保证了基于JPA开发企业应用能够经过少量修改就能够不同...简单方便 JPA主要目标之一就是提供更加简单编程模型:JPA框架下创建实体创建Java 类一样简单,没有任何约束限制,只需要使用 javax.persistence.Entity进行注释,JPA...高级特性 JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性关系数据库持久化。...查看数据库: 时间值没有,因为我们没有新增时候设置当前时间。 再试试修改查询 查询 4.6 自定义SQL执行 现在我们DAO层用JPA自带通过继承一个基类常用操作来实现。...关于JPAMybatis选择问题,这个之一在网络上争论不断,这个其实也没有什么好坏之分,是要能实现我们目的,选择那种框架只不过是其中一种手段罢了。

    2.8K10

    另一种思考:为什么不选JPA、MyBatis,而选择JDBCTemplate?

    不管是hibernate还是jpa,表之间连接查询,被映射为实体类之间关联关系,这样,如果两个实体类之间没有(实现)关联关系,你就不能把两个实体(或者表)join起来查询。...后来JOOQEbean,基本上继承了QueryDSL思路,Ebean基本上还是JPA风格ORM框架,虽然也支持SQL,但不清楚其DSL特性是否支持SQL语句编写,官网上看到例子都是用于构造JPQL...Ebean,需要了解复杂JPA概念各种奇异限制,JOOQ编写就是普通SQL语句,只是把查询结果填充到实体类中(严格说JOOQ没有实体类,只是自动生成Record对象),JOOQ甚至不一定要把结果转换为实体类...三、跨数据库移植 HibernateJPA使用hqlJPQL这类数据库无关中间语言描述查询,可以不同数据库中无缝移植,移植到一个SQL有巨大差别的数据库通常不需要修改代码或者只需要修改很少代码...JOOQ根据目标数据库转换SQL语句特性,使得不同数据库之间移植时候,只需要修改很少代码,明显优于MyBatis。

    2.5K20

    2018-12-13 java – Spring数据JPACrudRepositoryJpaRepository接口之间区别

    java – Spring数据JPACrudRepositoryJpaRepository接口之间区别 Spring Data JPACrudRepositoryJpaRepository...它们之间有什么区别?你为什么要使用一个另一个? JpaRepository延伸PagingAndSortingRepository,其继而延伸CrudRepository。...任何人都可以告诉我JTA,JPA和平面JDBChibernate方面有什么区别?我一直被问到这个问题,我提出答案时候发现了。...Hibernate实现了JPA标准 plain JDBC是一种用于访问数据库技术。这是Hibernate实际用来执行数据库操作,“引擎盖下”。它使用JDBC将查询发送到数据库。...转载注明原文:java – Hibernate中JTA,JPAPlain JDBC之间区别

    2.7K20

    快速学习-hibernate与JPA概述

    ,是一个全自动orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲使用对象编程思维来操纵数据库。...2.3 JPA优势 标准化 JPA 是 JCP 组织发布 Java EE 标准之一,因此任何声称符合 JPA 标准框架都遵循同样架构,提供相同访问API,这保证了基于JPA开发企业应用能够经过少量修改就能够不同...简单方便 JPA主要目标之一就是提供更加简单编程模型:JPA框架下创建实体创建Java 类一样简单,没有任何约束限制,只需要使用 javax.persistence.Entity进行注释,...JPA基于非侵入式原则设计,因此可以很容易其它框架或者容器集成 查询能力 JPA查询语言是面向对象而非面向数据库,它以面向对象自然语法构造查询语句,可以看成是Hibernate HQL...高级特性 JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性关系数据库持久化。

    1.3K10

    SpringDataAMybaits有什么区别,如何使用?

    SpringDataJPAMybaits 什么是JPA jpq是面向对象思想,一个对象就是一个表,强化是你对这个表控制。jpa继承那么多表约束注解也证明了jpa对这个数据库对象控制很注重。...其实,阿粉眼中,JPA好像就是Hibernate是一样东西,区别并不大。 Spring Data JPA是Spring Data子模块。...作为使用者,我们只需要编写自己repository接口,接口中包含一些个性化查询方法,Spring Data JPA将自动实现查询方法. 也就是说是什么呢?...Mybaits 文件,比如直接通过你建立生成 Dao文件 dao.xml文件。...有问题就改嘛,这才是好朋友。 看阿粉启动还是相对来说很成功,接下来我们就得安排一下这个 JPa 使用方式了。

    94640

    spring boot 中使用 jpa以及jpa介绍

    2.1标准化 JPA 是 JCP 组织发布 Java EE 标准之一,因此任何声称符合 JPA 标准框架都遵循同样架构,提供相同访问API,这保证了基于JPA开发企业应用能够经过少量修改就能够不同...2.3简单方便 JPA主要目标之一就是提供更加简单编程模型:JPA框架下创建实体创建Java 类一样简单,没有任何约束限制,只需要使用 javax.persistence.Entity进行注释...2.4高级特性 JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性关系数据库持久化...@OneToOne 定义了连接表之间有一个一对一关系。 @NamedQueries 指定命名查询列表。 @NamedQuery 指定使用静态名称查询。...那么JPA是通过什么规则来根据方法名生成sql语句查询呢?

    4.1K10

    Jpa使用详解

    标准化 JPA 是 JCP 组织发布 Java EE 标准之一,因此任何声称符合 JPA 标准框架都遵循同样架构,提供相同访问API,这保证了基于JPA开发企业应用能够经过少量修改就能够不同...简单方便 JPA主要目标之一就是提供更加简单编程模型:JPA框架下创建实体创建Java 类一样简单,没有任何约束限制,只需要使用 javax.persistence.Entity进行注释,...查询能力 JPA查询语言是面向对象而非面向数据库,它以面向对象自然语法构造查询语句,可以看成是Hibernate HQL等价物。...高级特性 JPA 中能够支持面向对象高级特性,如类之间继承、多态之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性关系数据库持久化。...(即多个线程访问同一个EntityManagerFactory 对象不会有线程安全问题),并且EntityManagerFactory 创建极其浪费资源,所以使用JPA编程时,我们可以对EntityManagerFactory

    3.2K20

    Spring Data Jpa初体验(内含demo)

    ORM 对象关系映射,即Object Relational Mapping,简称ORM.是一种程序技术,用于实现面向对象编程语言里不同类型系统数据之间转换....开发者还可以直接在声明方法上面使用 @Query 注解,并提供一个查询语句作为参数,Spring Data JPA 创建代理对象时,便以提供查询语句来实现其功能。...实际测试我才发现,许多方法继承接口中早已定义,比如查询全量,根据主键嗯增删改查,排序,分页等,可谓十分强大,因此简单测试了大于小于及多参数查询. 以下代码实际运行通过....后话 今天学习后,对Jpa也算是有一点了解,在我看来,他Mysql是两种不同思路,但是都可以完成同一个任务....附录:方法关键字使用方式及生成SQL列表 Keyword Sample JPQL snippet And findByLastnameAndFirstname … where x.lastname

    97430
    领券