下面是表格
CREATE TABLE MyTable(
'a_id' varchar(50) NOT NULL,
'b_id' varchar(100) NOT NULL,
'my_field' varchar(1) DEFAULT '0',
PRIMARY KEY ('a_id','b_id'));
值将是
a_id - b_id - my_field
aa - b1 - N
aa-b2-N
aa-b3-Y
aa-b5-N
pp-q1-Y
pp-q2-N
pp-q3-N
pp-q4-B
我希望有两个Java bean
Pojo1.java
private String aId
private List<Pojo2> pojo2
Pojo2.java
private String bId
private boolean myField
我想检索给定b_id的a_id(我能够检索到这个)
我想为单个pojo2
检索a_id
的列表(对此有疑问)
我的Java代码抛出
[b] java.lang.ClassCastException:[Ljava.lang.Object;无法施展 pojo2 [/ B]
try {
session = // create Hibernate session;
String query = "select x.bId,x.myField from MyTable x where x.aId=?";
Query queryObj = session.createQuery(query);
queryObj.setString(0, "value to aId");
Pojo2 mypojo2 = (Pojo2) queryObj.list();
} catch (Exception e) {
} finally {
close the connection
}
以下是MyTable
<hibernate-mapping auto-import="true" default-lazy="false">
<class name="com.db.beans.MyTable" table="MYTABLE">
<composite-id>
<key-property name="aId" type="string" column="a_id" length="100"/>
<key-property name="bId" type="string" column="b_id" length="100"/>
</composite-id>
<property name="myField" type="string" column="my_field" length="1" />
</class>
</hibernate-mapping>
请帮助纠正我的映射文件或Java代码。
答案 0 :(得分:1)
queryObj.list()
返回一个列表。您无法将列表强制转换为单个Pojo2。如果您的查询和映射是正确的,那么您将能够使用
Pojo2 mypojo2 = (Pojo2) (queryObj.list().get(0));