【发布时间】:2017-06-12 12:47:20
【问题描述】:
当我尝试在 Hibernate 中运行指定的 select 语句时,我遇到了内部服务器错误(没有写入 Tomcat 日志,除了 500 错误)。运行传统的简单 select 语句时,我没有任何问题。
我正在将休眠查询记录到我的控制台。运行良好的休眠查询只是传统的选择语句
(select x from Entity x):
Hibernate:
select
trumpialis0_.TLDLID as TLDLID1_0_,
trumpialis0_.TLDLDNM as TLDLDNM2_0_,
trumpialis0_.TLDLMSG as TLDLMSG3_0_,
trumpialis0_.TLDLNAM as TLDLNAM4_0_,
trumpialis0_.TLDLDAB as TLDLDAB5_0_,
trumpialis0_.TLDLSTS as TLDLSTS6_0_
from
LIBRARY.TABLE trumpialis0_
where
trumpialis0_.TLDLSTS='W'
运行select x.property... from Entity x时的休眠查询
Hibernate:
select
trumpialis0_.TLDLDNM as col_0_0_
from
LIBRARY.TABLE trumpialis0_
where
trumpialis0_.TLDLSTS='W'
运行选择的Java是:rows = em.createQuery("select x.displayName from X where x.webStatus = 'W'").getResultList();
我的实体如下所示:
@Entity
@Table(name = "TABLE", schema = "LIBRARY")
@XmlRootElement
public class X {
private String id;
private String name;
private String displayName;
private String webStatus;
private String messagesPerMonth;
@Id
@Column(name = "TLDLID")
@GeneratedValue(strategy = GenerationType.AUTO)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
....
不管怎样,我可以在 Intellij 中运行 JPA-QL 查询并只取回我想要的列,但是当我这样做时它们似乎丢失了列名。
有没有办法只选择某些属性?我不需要返回所有内容,也不想强制转换为“返回对象”或类似的东西。
【问题讨论】:
-
那么,如果您只是除以零,您是否会在日志中看到任何有用的信息,或者您是否也只是收到一个没有任何解释的普通 500?
-
我应该在哪里尝试除以 0?
-
在任何你确定它会被执行的地方。可能就在“运行选择的 Java”之前。
-
是的,它会抱怨。我可以做其他错误的事情,这对解决问题会更有帮助。
-
哇。那我不知道有什么问题。让我们看看其他人是否有任何线索。