下表为
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 (我能够检索到它)
我想检索单个 a_id
的 pojo2
列表(对此有问题)
我的 Java 代码抛出
[b]java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 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 文件
<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 代码。
最佳答案
queryObj.list()
返回一个列表。您无法将列表转换到单个 Pojo2。如果您的查询和映射正确,那么您将能够使用
Pojo2 mypojo2 = (Pojo2) (queryObj.list().get(0));
关于java - 在 Hibernate 中需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21441452/