- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 openshift 托管 JBoss 网络应用程序。然而,他们最近更新到 EAP 6.3,这打破了 Hibernate 持久层。
当使用实体管理器完成标准更新时,我得到一个异常:
Every derived table must have its own alias
我知道这个错误是由 Hibernate 生成无效的 MySQL 查询语法引起的。但您如何才能避免这种情况呢?
代码:
private Object updateObject(Object object) {
try {
return em.merge(object);
} catch(ConstraintViolationException ex) {
log.error("Error updating object");
throw ex;
}
}
激活 SQL 查询我发现代码执行以下更新:
update expence_form
set create_dat=?, last_update_dat=?, approvedby_id=?, approved_dat=?, comment=?, expence_submitter_id=?, ExternalRef=?, owner_id=?, paidby_id=?, paid_dat=?, season_id=?, status=?, submit_dat=?, submitter_id=?, expenceform_type=?, year=?
where id=?
=> 好的
select count(id)
from (
select id, create_dat, last_update_dat, expence_amt, expence_date, km_distance, km_expence_amt, route_desc, expence_form_id, comment, event_id, null as description, null as budget_group_id, null as expence_type_id, 1 as clazz_
from fixed_expence_detail
union
select id, create_dat, last_update_dat, expence_amt, expence_date, km_distance, km_expence_amt, route_desc, expence_form_id, null as comment, null as event_id, description, budget_group_id, expence_type_id, 2 as clazz_
from proven_expence_detail
)
where expence_form_id =?
=> NOK,因为子查询没有别名。
我发现了以下错误报告,但没有说明如何解决该问题。
https://hibernate.atlassian.net/browse/HHH-9139
目前我完全陷入困境,因为 openshift 迫使我将有问题的 EAP6.3 版本与 MySQL 一起使用。在 JBoss 在 openshift 中修复它之前,我该如何规避这个问题?
最佳答案
问题似乎与使用 TABLE_PER_CLASS 的继承结构有关:由于某种原因,hibernate 在合并命令上对继承结构中的每个表执行计数查询。
我的对象结构如下:(包含 ExpenceFormDetails 列表的 expenceForm 对象)
ExpenceForm <- ExpenceFormDetails
ExpenceFormDetails(抽象类)
代码:
@Entity
@Table(name="expence_form")
public class ExpenceForm extends BaseEntityIdentityIdImpl
{
//some properties
@OneToMany(mappedBy="expenceForm", fetch=FetchType.LAZY)
@OrderBy("expenceDate")
public List<ExpenceFormDetails> getExpenceFormDetails() {
return expenceFormDetails;
}
}
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class ExpenceFormDetails extends BaseEntitySequenceIdImpl
implements Comparable<ExpenceFormDetails>
{
// some properies
}
@Entity
@Table(name="fixed_expence_detail")
public class FixedExpenceFormDetail extends ExpenceFormDetails
{
//Extra properties
}
因为我不知道如何影响 hibernate 查询,所以我只是通过为对象编写一个手动更新命令来解决这个问题:
Query updateQuery = em.createQuery("update ExpenceForm set submitter= :submitter, "
+ "owner= :owner, approvedBy=:approvedBy, paidBy= :paidBy, season= :season, "
+ "expenceSubmitter= :expenceSubmitter, submitDate= :submitDate, approvedDate= :approvedDate, paidDate= :paidDate, externalRef= :externalRef, "
+ "status=:status, type=:type, comment=:comment, year=:year "
+ "where id= :id")
.setParameter("submitter", f.getSubmitter())
.setParameter("owner", f.getOwner()).setParameter("approvedBy", f.getApprovedBy()).setParameter("paidBy", f.getPaidBy())
.setParameter("season", f.getSeason()).setParameter("expenceSubmitter", f.getExpenceSubmitter()).setParameter("submitDate", f.getSubmitDate())
.setParameter("approvedDate", f.getApprovedDate()).setParameter("paidDate", f.getPaidDate()).setParameter("externalRef", f.getExternalRef())
.setParameter("status", f.getStatus()).setParameter("type", f.getType()).setParameter("comment", f.getComment())
.setParameter("year", f.getYear()).setParameter("id", f.getId());
updateQuery.executeUpdate();
但是我仍然认为这是一个“hack”,并没有解决真正的问题。如果对 hibernate 项目具有 jira 访问权限的人读到这篇文章,我认为打开一个专门的缺陷是合适的。
关于java - EAP 6.3 基本 hibernate 更新抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25470445/
我知道 eap tls 是传输层安全功能。但即使在谷歌搜索之后,仍然存在一些不清晰的地方。 eap tls 是通用 eap 协议(protocol)定义的特殊实现吗?或者 eap tls 是 eap
我想在 Jboss EAP 7 上升级到 JSF 2.3。 我遵循了本指南: https://docs.jboss.org/author/display/WFLY10/JSF+Configuratio
我的项目在 JBOSS EAP 6 上运行。这个 XX.war 部署在 Jboss EAP6 中,但现在我们正在升级到 EAP7。当我在 Jboss EAP7 本地部署 war 文件时,出现此错误。
在 Ansible 提供 JBoss EAP 之后,我在配置 JBoss EAP 时遇到了麻烦。 添加数据源 gradle 任务因 java.lang.IllegalArgumentException
我有一个包含 JPA 2.1 API 和 Hibernate 4.3.0.Final(JPA 2.1 实现)的 war 应用程序,使用 Spring 容器打包和引导,我想在 JBoss EAP 6.1
前言 在C# 5.0中,新增了async await 2个关键字支持异步编程的操作。在讲述这两个关键字之前,我先总结一下.NET中的常见的异步编程模型。 异步编程一直是比较复
我试图用以下代码将 EAP 包装在任务中。 public static async Task Caller() { var ret = await RunProgram();
我已将 jenkins 配置为将从作业生成的 jar 文件复制到运行 jboss 的远程主机 (GNU LINUX) 上的目标文件夹。目前我每次都必须手动重新启动 jboss 才能反射(reflect
我正在尝试以编程方式在 Android 上创建企业 WiFi 配置文件(WPA-Enterprise、WPA2-Enterprise)。 我见过一个比较有名的方案,就是用反射来实现。据我了解,如果必须
从.NET 4.5开始,支持的三种异步编程模式: •基于事件的异步编程设计模式 (EAP,Event-based Asynchronous Pattern) •异步编程模型(
我这里有个情况: 我有一个 .eap 文件,并且我有一个可用的工具,即 StarUML。我需要将 .eap 文件内容导入 StarUML。 基本上,我需要知道如何将 .eap 转换为某种格式以导入 S
当我运行以下 Dockerfile 时,容器响应错误并退出。 如果我注释掉 COPY,容器将正常启动。 我是否需要配置其他内容才能让容器启动并部署应用程序? docker 文件: FROM regis
我正在使用 Jboss EAP 6.4 域架构。我的计划是将所有资源属性文件捆绑为外部模块,并定义一个部署结构以将它们添加到类路径中。这工作得很好,但是服务器没有检测到运行时所做的更改,需要重新启动
我在同一台机器上运行域 Controller 、一个主机 Controller 和一台服务器。 我正在使用 IDEA 连接到远程服务器进行调试,但它并没有在断点处停止,即使它正在运行代码(我已经通过系
我正在尝试决定是在我们的 JBoss EAP 6 环境中使用独立模式还是域模式。我们在一台机器上运行多个 JBoss 环境。 有什么好处和坏处?对我来说,域模型可能是管理环境的一种优雅方式,但是修改一
我在我的 WPF 应用程序中使用 CefSharp 3 来使用基于 Chromium 的 webBrowser 控件。为了调用 html 中的某些脚本,使用了 ExecutScriptAsync 方法
我的场景: 我有 2 个不同的 keystore (A.jks 和 B.jks),用于与两个不同服务器的 SSL 连接。这些 keystore 在进行“冒烟测试”时从命令行运行。 使用EAP服务器,如
我在一个特定的 linux 机器上有多个 jboss 实例。我不想 grep jboss 实例的进程 ID 和监听端口。server.log 或 CLI 命令是否有解决方法? 最佳答案 除了 Pana
在过去的几天里,我在从 Eclipse 发布到 JBoss EAP 6.3 或 Wildfly 8.2 时遇到了这个错误。 Error renaming D:\Servers\wildfly-8.2.
Jboss EAP 6 的默认管理控制台密码是什么? 它不允许我在没有密码的情况下查看管理控制台。而且我也找不到配置页面。 请指教。 最佳答案 转到 JBOSS_HOME\bin,运行 add-use
我是一名优秀的程序员,十分优秀!