问题标签 [jpa-2.1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JPA 2.1/Hibernate 4.3 弃用警告
我正在使用带有实现的JPA 2.1
示例应用程序。Hibernate 4.3.x
在pom.xml
我有以下依赖。
示例命令行应用程序正常工作(t 非常简单),但是当我启动它时收到以下警告消息。
那么,这是我错误配置的问题(我可以避免吗?),还是 Hibernate 实现中的问题?
更新
这是我使用的代码:
jakarta-ee - 注释处理器 org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor 支持的源版本 RELEASE_6 低于 source1.7
我有一个在以下环境中运行的企业应用程序。
- 莫哈拉 2.2.7
- PrimeFaces 5.0 最终版
- PrimeFaces 扩展 2.0 最终版
- OmniFaces 1.8.1
- 具有 JPA 2.1 的 EclipseLink 2.5.2
- GlashFish 4.0
- NetBeans IDE 8.0
- JDK 1.7
project.properties
我已将所有三个模块(Java EE 模块、EJB 模块和 WAR 模块)下文件中的源级别从 1.6 更改为 1.7,nbproject
以支持 Java EE 7。它不是Maven 项目。
j2ee.platform=1.7
javac.source=1.7
javac.target=1.7
早些时候他们都是1.6。
进行这些更改后,清理项目时会出现以下警告。
警告:注释处理器'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor'支持的源版本'RELEASE_6'小于-source'1.7'
我正在使用EclipseLink 元模型生成器1.3.0 final来生成静态元模型。
除了将源级别降级到 1.6 之外,有没有办法摆脱这个警告?这个警告有什么不兼容的地方吗?
更新 :
在 EclipseLink 2.6.1 (自 2015 年 10 月 15 日星期四起可用)中,此警告不再可重现,其中包含捆绑提供的相应元模型生成器 - org.eclipse.persistence.jpa.modelgen_2.6.1.v20150916-55dc7c3.jar
。
目前在 GlassFish 4.1 / Java EE 7 上使用 EclipseLink 2.6.1 (JPA 2.1) 和 JDK 8u45 进行了测试。
我假设它是固定的。
mysql - 非持久实体上的构造函数查询意外未能提供布尔参数作为构造函数参数
MySQL数据库中有两个表
- 用户表
- 反馈
它们之间的关系是直观的——一对多 from user_table
to feedback
。
我只需要从这些表中获取选定列的列表,这些表是
- 来自反馈
- 反馈ID(java.lang.Long)
- 反馈标题(java.lang.String)
- feedbackDescription(字符串,由 装饰
@Lob
) - 反馈日期(org.joda.time.DateTime)
- 推荐(java.lang.Boolean)
- 来自用户表
- 用户 ID (java.lang.Long)
- 名字(java.lang.String)
通过执行查询需要获得许多其他字段中的许多字段。
条件查询如下。
FeedbackUtils
课程如下。
testimonial
实体中的属性映射Feedback
如下。
它是TINYINT(1)
MySQL 中的一种类型。
尝试上述查询时会引发以下异常。
当类中的类型testimonial
从更改为时,这可以正常工作。Boolean
Object
FeedbackUtils
Boolean
如果在构造函数参数列表中给定了一个类型,为什么它不让构造函数查询工作?
我正在使用 EclipseLink 2.5.1。
编辑 :
在FeedbackUtils
类的构造函数中,进行以下检查,
返回java.lang.Boolean
以及以下所有内容,
返回true
。
因此,以下类型转换也是有效的。
直到相关的 XHTML 页面,它的行为就像Boolean
.
hibernate - 从 JBoss 7.1 中排除 JPA 2.0 以使用休眠 4.3
我想在 JBoss 7.1 中使用 hibernate 4.3 的多租户特性。
通过在 jboss-deployment-structure 中添加以下几行,我设法将它包含在我的战争中
并在我的 pom.xml 中添加对休眠核心和实体管理器的依赖项
这使得休眠 4.3 加载但不幸的是我得到了一个错误
这是由于在休眠 4.3 使用 JPA 2.1 时加载了 JPA 2.0
我已经看过这些线程并尝试了他们的建议 Excluding JPA Subsystem from JBoss EAP 6.1 - Trying to use JPA 2.1 in JBoss EAP 6.1 , JBoss AS7 Automatically Loading JPA , Hibernate 4.3.0.Final & Spring Data JPA 1.4.3.RELEASE。
我添加了一个persistence.xml
从 Spring Data 中排除 hibernate jpa 2.0
从 JBoss Standalone.xml 中完全删除了 JPA 子系统,但没有任何成功。
正如另一个线程中所建议的那样,唯一能解决问题的是在 jboss-deployment-structure 中排除整个 javaee.api
但这会给我的其余代码带来很多问题。
更新:我的 jboss-deployment-structure.xml 现在是这样的
如您所见,我已经尝试了很多没有运气的事情,因此,如果有人有其他想法,非常欢迎。
hibernate - 在 JPA 中以多对多关系防止连接表中的重复条目
我正在使用 EclipseLink 2.5.1(和 Hibernate 4.3.5 final)。给定 MySQL 中的下表。
- 产品
- prod_colour(连接表)
- 颜色
产品与其颜色之间存在多对多的关系。
一种产品可以有多种颜色,而一种颜色又可以与多种产品相关联。这种关系在数据库中由这些表表示。
该prod_colour
表有两个引用列prod_id
,并分别colour_id
来自其相关的父表product
和colour
。
很明显,实体类Product
有一个颜色列表——java.util.List<Colour>
命名为colourList
.
实体类Colour
有一个产品列表 -java.util.List<Product>
名为productList
.
Colour
实体中的关系:
Product
实体中的关系:
从关联的 EJB 执行插入操作如下。
一切正常。
当尝试重复行(与同一Colour
实体关联的相同Product
实体)时,它们也会插入到prod_colour
我期望不应该发生的表中。
我是否需要执行一些额外的条件检查以避免重复插入或 EclipseLink/Hibernate 有一些机制来防止在这种情况下重复?
java - 将 JPA 2.1 中的 List 或 Set 用于同一个表中的多个列
我是 JPA 的新手。我正在使用 Wicket-Spring-Hibernate-JPA 构建示例 maven 项目。
我正在使用 Hibernate EntityManager:v4.3.5.Final。我正在使用 JPA:v2.1-api。我正在使用数据库 mySql:v5.6。
当我编写模型类时,我想将表的多个列与模型类中的一个元素映射为 List 或 Set。
注意:假设最多有 6 个选项可供提问。
现在在模型类中,我想这样表示:
对于代码中的行:
我想在这里为选项列创建一个列表或集合。
请让我知道任何可能的方法。或者,如果有人知道这种情况,请提供任何替代方案。
您好 Luiggi,我不确定您提供的上述链接能否解决我的问题。我仍然试图理解该链接中提供的选项。我正在寻找的是,我能否在我们的 Bean 类中创建一个列表或列名集作为一个元素(使用 JPA 注释)。
mysql - EclipseLink 无法获取标量布尔值
以下 JPA 条件查询在 Hibernate(4.2.7 最终版)上成功。
它只是为了从 MySQL 数据库返回一个标量布尔值。对应的列是TINYINT(1)
MySQL 中的类型。
它生成以下 SQL 语句。
同样的查询在 EclipseLink (2.5.1) 上失败,在这种情况下它什么也不返回(没有错误,没有异常)。但是,它会生成正确的 SQL 语句,如下所示。
对应的JPQL像这样,
也没有得到有问题的价值。
但是,它可以与其他列一起使用,如下所示。
添加了一个额外的列root.get(UserTable_.firstName)
,并且返回类型CriteriaQuery
从 更改CriteriaQuery<Boolean>
为CriteriaQuery<Object[]>
。
该列在相应实体中定义如下。
为什么它不在 EclipseLink 中给出布尔值?
hibernate - 如何排除 JBoss 提供的 javax.persistence 模块?
我正在使用 JBoss 7.1.3.Final。我想在我的 WAR 中打包我自己的 Hibernate 4.3.0.Final Jars 和 JPA 2.1 规范 JAR。替换 JBoss 中的休眠(或任何其他)模块不是一个选项。
如何从我的 WAR 中排除 JPA 2.1?
我试过把它放在我的WEB-INF/jboss-deployment-structure.xml
:
但不知何故,JPA 2.1 被加载,我的 WAR 部署因这个异常而死......</p>
这些是我的 Maven 礼仪:
任何关于如何重组我的 WAR 的建议都值得赞赏。我已经验证没有加载旧版本的 JPA 2.0 规范(通过 mvn 依赖:树)。
编辑:
下面是我如何在 Spring 中配置我的数据源。注意没有 persistence.xml 文件:
spring - 在 Hibernate 4.3.5 final 上 JNDI 查找失败 - javax.naming.NameNotFoundException: Name [xxx] is not bound in this Context。找不到 [xxx]
我正在尝试使用 Spring 4.0.0 GA 和 JSF 2.2.6 将 Hibernate 从 4.2.7 final 升级到在 Tomcat 8.0.5 上运行的4.3.5 final。
以下库被添加到类路径中。
- antlr-2.7.7.jar
- dom4j-1.6.1.jar
- hibernate-commons-annotations-4.0.4.Final.jar
- hibernate-core-4.3.5.Final.jar
- hibernate-jpa-2.1-api-1.0.0.Final.jar
- jandex-1.1.0.Final.jar
- javassist-3.18.1-GA.jar
- jboss-logging-3.1.3.GA.jar
- jboss-logging-annotations-1.2.0.Beta1.jar
- jboss-transaction-api_1.2_spec-1.0.0.Final.jar
- hibernate-entitymanager-4.3.5.Final.jar
并用于生成静态元模型(处理器)。
- hibernate-jpamodelgen-4.3.5.Final.jar
升级后,抛出以下异常。
persistence.xml 文件:
application-context.xml 文件:
下的 context.xml 文件META-INF
:
在 web.xml 中,添加了一个资源引用,如下所示。
我已经尝试将名称从更改为java:comp/env/jdbc/social_networking
,java:/comp/env/jdbc/social_networking
但这也没有任何区别。
为什么在最新的 Hibernate 版本中无法使用 JNDI 定位资源?
编辑 :
我选择了一种临时方式,如this question/accepted answer所示,在未来版本中修复潜在错误之前不使用JNDI 。
java - JPA 对 Java 8 新日期和时间 API 的支持
我正在为我的新项目使用 Java 8。
我正在尝试在 java 8 中使用新的日期和时间 API,但是我不知道是否JPA 2.1
完全支持这个新的日期和时间 API。
请分享您在 JPA 对 Java 8 中新的日期和时间 API 的支持方面的经验/意见。
我可以通过 JPA 2.1 在 Java 8 中安全地使用新的日期和时间 API 吗?
更新:
我使用 Hibernate (4.3.5.Final) 作为 JPA 实现。