【发布时间】:2018-10-02 07:20:52
【问题描述】:
问题本身将不断更新,直到错误清除为止。
几个月前,我们最近对我们的系统进行了升级,从 JBoss 升级到 Wildfly,从那以后我们的系统就出现了故障。
假设我有以下表格
CREATE TABLE students(
ID int,
Classid int,
Name varchar(50),
Version int
)
CREATE TABLE classstudent(
ID int,
Classname varchar(50),
Version int
)
我编写了以下查询并且它有效
select *
from students
我写了以下,但它不起作用
select *
from students s
join classStudent cs on cs.id = s.classid
所以我决定选择每个字段
select s.id,s.classid,c.name,s.version,cs.id,cs.classname,cs.version
from students s
join classStudent cs on cs.id = s.classid
我仍然得到一个错误,所以我决定从每个表中选择 2 个 ID
select s.id,cs.id
from students s
join classStudent cs on cs.id = s.classid
我又遇到了一个错误,但后来我将 id 重命名为不同的名称
select s.id as sid,cs.id as csid
from students s
join classStudent cs on cs.id = s.classid
此查询有效,因此很明显,只要任一表上的字段名称相同,系统就会抛出错误。
这是什么问题,我该如何解决这个问题?我应该从哪里开始寻找?任何可以帮助我指明正确方向的链接都会非常有用!
error
----
WFLYEJB0443: EJB 3.1 FR 13.3.3: BMT bean SqlSearchExecutionSessionBean should complete transaction before returning.
然而,正如我之前所说,这是一个一般性错误,当我拼错表名或字段名时,我有时也会遇到此错误!
【问题讨论】:
-
1.这是什么错误?您如何处理这些查询?如果您在进一步的查询中使用相同的名称,这将失败 2. 您的表名有问题吗?在 Postgres 中,默认情况下每个名称都使用非大写字母。
-
这是一个很好的例子,说明为什么在生产代码中应该避免使用
select *。 -
你的权利@S-Man 这是我对表名的拼写错误。错误是一般错误,通常与错误无关。但供您参考,它的 WFLYEJB0443: EJB 3.1 FR 13.3.3: BMT bean SqlSearchExecutionSessionBean 应该在返回之前完成事务。
-
@a_horse_with_no_name 数据库非常庞大和复杂,没有 erd 映射。所以每当我从一个我不知道的表中检索数据时,我通常会选择 * 并加入一些表以查看相应的值!如果没有选择,我的所有工作都会大大减慢!
-
这就像你在一个房子里有 2 个孩子,他们都同名 Tito,现在打电话给
Tito谁应该回复?或者如果你打电话给家里不存在的人会回复?同样的方式编码语言不理解这些情况并在你尝试在同一个房子里使用多个相同的名字或打电话给不存在的人时抛出错误。
标签: java postgresql ejb wildfly