java - 在 Hibernate 中需要帮助

标签 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 (我能够检索到它) 我想检索单个 a_idpojo2 列表(对此有问题)

我的 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/

相关文章:

java - 创建maxHeap,Collections.reverseOrder() 和((a, b) -> b - a) 的区别;

java - 这个 JSON 有什么问题?

java - 带有计数函数aliasToBean的sql条件Hibernate问题

java - 如何在我的测试代码中直接使用 HibernateTemplate

java - 如何使用 Hibernate 连接两个表的字段?

java - 在java中自动打开浏览器全屏(信息亭和隐身模式)

java - javafx 应用程序中不需要的线程

java - 有没有办法读取oracle中的RAW和TIMESTAMP数据类型并使用JAVA代码导出到Excel

java - 用于 Hibernate 搜索中时间戳的 FieldBridge

java - 无法使用hibernate连接到mysql