需要帮助Hibernate

时间:2014-01-29 20:04:16

标签: java hibernate

下面是表格

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

的hi​​bernate文件
<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代码。

1 个答案:

答案 0 :(得分:1)

queryObj.list()返回一个列表。您无法将列表强制转换为单个Pojo2。如果您的查询和映射是正确的,那么您将能够使用

Pojo2 mypojo2 = (Pojo2) (queryObj.list().get(0));