<hibernate-mapping>
<class name="test.Hibernate" table="HIBERNATE" schema="SYSTEM">
<composite-id name="id" class="test.HibernateId">
<key-property name="hid" type="java.lang.Long">
<column name="HID" precision="22" scale="0" />
</key-property>
<key-property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</key-property>
</composite-id>
</class>
<sql-query name="testquery">
<return alias="hibernate" class="test.Hibernate">
</return>
select name from Hibernate
</sql-query>
</hibernate-mapping>数据库中表名为Hibernate,用select * from Hibernate则没事,可以读出Hibernate对象的List.
用 select hid,name from Hibernate也没事,也是读出对象的List
但是我想只读其中一列,就有问题了.求救怎么用命名查询方式只读一个字段?
<class name="test.Hibernate" table="HIBERNATE" schema="SYSTEM">
<composite-id name="id" class="test.HibernateId">
<key-property name="hid" type="java.lang.Long">
<column name="HID" precision="22" scale="0" />
</key-property>
<key-property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</key-property>
</composite-id>
</class>
<sql-query name="testquery">
<return alias="hibernate" class="test.Hibernate">
</return>
select name from Hibernate
</sql-query>
</hibernate-mapping>数据库中表名为Hibernate,用select * from Hibernate则没事,可以读出Hibernate对象的List.
用 select hid,name from Hibernate也没事,也是读出对象的List
但是我想只读其中一列,就有问题了.求救怎么用命名查询方式只读一个字段?
这句话是什么意思啊?
我记得这样读出的是Object【】的List啊,
select name from Hibernate
读出的也应该是一个Object【】 的List,不过Object只有一个元素吧。
你要不然把你的代码贴出来看看。
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2148)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:111)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1655)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164)
at test.JPTEST.main(JPTEST.java:47)
Caused by: java.sql.SQLException: 列名无效
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.java:6218)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1557)
at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1601)
at org.hibernate.type.LongType.get(LongType.java:28)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102)
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1088)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:554)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
... 7 more
List xxx= hdao.getSession().getNamedQuery("testquery").list();
Hibernate bb=(Hibernate)xxx.get(0);
System.out.println(bb.getId().getName());
System.out.println(xxx.get(0));
List xxx= hdao.getSession().getNamedQuery("testquery").list();
Hibernate bb=(Hibernate)xxx.get(0);
System.out.println(bb.getId().getName());
System.out.println(xxx.get(0));
</return>
里要加什么return property这样的东西?求救啊...
<hibernate-mapping>
<class name="test.Hi" table="HI" schema="SYSTEM">
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</property>
</class>
<sql-query name="sbquery">
<return alias="hie" class="test.Hi">
</return>
select id as {hie.id},name as {hie.name} from Hi where 1=1
</sql-query>
</hibernate-mapping>如上可用.
但是我一旦改成select id as {hie.id} from Hi where 1=1,只读主键的话,立刻出现列名无效的错误这是调用代码,求救如果在命名查询中取得一个字段?