Java 为什么本机SQL不工作?
我使用HibernateV4.2.7.Final 表结构为:Java 为什么本机SQL不工作?,java,hibernate,Java,Hibernate,我使用HibernateV4.2.7.Final 表结构为: CREATE TABLE "OWNER"."TABLE" ( "COL1" VARCHAR2(20 BYTE), "COL2" VARCHAR2(20 BYTE), "COL3" VARCHAR2(20 BYTE), "COL4" VARCHAR2(20 BYTE), "COL5" VARCHAR2(20 BYTE) ) ; 方法代码源: @Suppres
CREATE TABLE "OWNER"."TABLE"
(
"COL1" VARCHAR2(20 BYTE),
"COL2" VARCHAR2(20 BYTE),
"COL3" VARCHAR2(20 BYTE),
"COL4" VARCHAR2(20 BYTE),
"COL5" VARCHAR2(20 BYTE)
) ;
方法代码源:
@SuppressWarnings("rawtypes")
public List<?> getAllPropertyValues(String property) {
logger.debug("finding all {} from TABLE", property);
try {
// Set the session ...
String query = String.format(
"SELECT DISTINCT t.%s, t.col2 FROM TABLE t ORDER BY t.col2",
property.toUpperCase());
logger.debug("query : '{}'", query);
SQLQuery results = session.createSQLQuery(query);
List list = null;
if (null != results) {
list = results.list();
}
session.getTransaction().commit();
return list;
} catch (RuntimeException re) {
logger.error("find all failed", re);
throw re;
}
}
解决问题。但是这不是本机SQL。我很想知道为什么原生SQL在这里不起作用
有人能解释一下原因吗?在这里如何使用本机SQL?我的表没有主键,所以Hibernate似乎混淆了SQL和HQL查询 当我重新设计数据库时,Hibernate为每个表生成2个类
公共类Classe
,表示表Classe公共类ClasseId
,表示所有列上嵌入的id这对我来说很奇怪,但我认为代表一个表的每个类都必须有一个id。我必须使用not SQLTry-从表s ORDER BY s.col2中选择不同的s.col1、s.col2您能提供更多代码吗?你确定你和db有联系吗?@wawek连接很好!我想确保你们知道,在这一行中,你们只创建了一个查询,为了得到结果,你们必须执行它。你明白了吗?
@SuppressWarnings("rawtypes")
public List<?> getAllPropertyValues(String property) {
logger.debug("finding all {} from TABLE", property);
try {
// Set the session ...
String query = String.format("SELECT DISTINCT t.id.%s, t.id.col2 FROM Table t ORDER BY t.id.col2", property.toLowerCase());
logger.debug("query : '{}'", query);
Query results = session.createQuery(query); // query is NOT NATIVE SQL here, THIS IS HQL
List list = null;
if (null != results) {
list = results.list();
}
session.getTransaction().commit();
return list;
} catch (RuntimeException re) {
logger.error("find all failed", re);
throw re;
}
}