-
hibernate里使用联合主键composite-id映射查询0
通过联合主键查询数据库(ORACLE),出错信息为:
Exception in thread "main" org.hibernate.PropertyNotFoundException: Could not find setter for ID on class com.traffic.rest.data.bean.DimTraficonMap
at org.hibernate.property.ChainedPropertyAccessor.getSetter(ChainedPropertyAccessor.java:44)
at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:57)
at org.hibernate.hql.HolderInstantiator.instantiate(HolderInstantiator.java:69)
at org.hibernate.loader.custom.CustomLoader.getResultList(CustomLoader.java:330)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
at org.hibernate.loader.Loader.list(Loader.java:2090)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:150)
at dao.BaseDao.getCount(BaseDao.java:113)
at com.traffic.rest.dao.TrafficMapDao.get(TrafficMapDao.java:28)
at com.traffic.rest.dao.TrafficMapDao.main(TrafficMapDao.java:44)
执行查询的语句,其中hql为select * from dim_traficon_map where ID='124' and ZONE_ID='1969'
Query query = session.createSQLQuery(hql);
query.setResultTransformer(Transformers.aliasToBean(entityClass));
return query.list();
相关的javabean类package com.traffic.rest.data.bean; // Generated 2012-6-6 12:52:18 by Hibernate Tools 3.2.0.b9 import java.math.BigDecimal; /** * @hibernate.class * table="DIM_TRAFICON_MAP" * */ public class DimTraficonMap implements java.io.Serializable { /** * @hibernate.property * column="ID" * */ private BigDecimal id; /** * @hibernate.property * column="ZONE_ID" * */ private BigDecimal zoneId; /** * @hibernate.property * column="IP" * length="128" * */ private String ip; /** * @hibernate.property * column="CA" * length="50" * */ private String ca; /** * @hibernate.property * column="LID" * length="22" * not-null="true" * */ private BigDecimal lid; public DimTraficonMap() { } public DimTraficonMap(BigDecimal id, BigDecimal zoneId, BigDecimal lid) { this.id = id; this.zoneId = zoneId; this.lid = lid; } public DimTraficonMap(BigDecimal id, BigDecimal zoneId, String ip, String ca, BigDecimal lid) { this.id = id; this.zoneId = zoneId; this.ip = ip; this.ca = ca; this.lid = lid; } /** * * @hibernate.property * column="ID" * */ public BigDecimal getId() { return this.id; } public void setId(BigDecimal id) { this.id = id; } /** * * @hibernate.property * column="ZONE_ID" * */ public BigDecimal getZoneId() { return this.zoneId; } public void setZoneId(BigDecimal zoneId) { this.zoneId = zoneId; } /** * * @hibernate.property * column="IP" * length="128" * */ public String getIp() { return this.ip; } public void setIp(String ip) { this.ip = ip; } /** * * @hibernate.property * column="CA" * length="50" * */ public String getCa() { return this.ca; } public void setCa(String ca) { this.ca = ca; } /** * * @hibernate.property * column="LID" * length="22" * not-null="true" * */ public BigDecimal getLid() { return this.lid; } public void setLid(BigDecimal lid) { this.lid = lid; } }
相应的HBM文件<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- Created by the Middlegen Hibernate plugin 2.1 http://boss.bekk.no/boss/middlegen/ http://www.hibernate.org/ --> <class name="com.traffic.rest.data.bean.DimTraficonMap" table="DIM_TRAFICON_MAP" > <composite-id> <key-property name="id" column="ID" type="java.math.BigDecimal" length="22" ></key-property> <key-property name="zoneId" column="ZONE_ID" type="java.math.BigDecimal" length="22" ></key-property> </composite-id> <property name="ip" type="java.lang.String" column="IP" length="128" ></property> <property name="ca" type="java.lang.String" column="CA" length="50" ></property> <property name="lid" type="java.math.BigDecimal" column="LID" not-null="true" length="22" ></property> </class> </hibernate-mapping>
2012年6月06日 13:36
目前还没有答案
相关推荐
在Java的持久化框架Hibernate中,联合主键(Composite Key)是一种特殊的数据模型设计,用于处理具有多个字段作为主键的实体。联合主键通常在数据表中的某些列共同决定了唯一标识的情况出现。在Hibernate中,有三种...
在Java持久化框架Hibernate中,联合主键(Composite Key)是一种特殊的数据结构,用于标识数据库表中的一条记录。与单个字段作为主键不同,联合主键由两个或更多个字段共同组成,形成一个唯一的标识。在本教程中,...
在 Hibernate 中,联合主键(Composite Key)是指由两个或多个属性共同构成的主键,这种主键在数据库设计中常见于需要多个字段唯一标识一条记录的情况。在 Hibernate 中设置联合主键通常需要以下几个步骤: 1. **...
复合主键映射 <br>通常将复合主键相关属性,单独抽取出来,建立一个独立的类 * 必须实现序列化接口 * 必须实现equals和hashcode方法 采用<composite-id>标签进行映射,其它属性采用正常映射
《Hibernate复合主键配置与使用详解》 在Java开发中,Hibernate作为一款强大的ORM框架,大大简化了数据库操作。然而,当我们面临复杂的数据表结构,尤其是涉及到复合主键时,如何在Hibernate中进行配置和使用就显得...
在Hibernate中,实现联合主键可以通过使用`@Embeddable`和`@EmbeddedId`注解。首先,我们需要创建一个包含所有主键字段的类,并使用`@Embeddable`标记。这个类通常会作为其他实体类的属性,用`@EmbeddedId`注解。...
在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本实例将深入探讨如何在Hibernate中实现复合主键,并提供一个具体的示例来帮助理解。 ...
使用<composite-id> 标签(并且内嵌<key-property>元素)代替通常的<id>标签。比如,OrderLine类具有一个主键,这个主键依赖于Order的(联合)主键。 <composite-id name="id" class="OrderLineId"> <key-property...
Hibernate Mapping是Java领域中一种重要的对象关系映射(ORM)技术,它使得开发者可以使用面向对象的方式来操作数据库,极大地简化了数据存取的操作。在Hibernate中,mapping文件是连接Java类和数据库表的关键,它...
- **composite-id联合ID**:当实体类具有多个主键字段时的映射方法。 - **识别器(discriminator)**:用于区分继承体系中的不同子类。 - **版本(version)**:乐观锁实现策略之一。 - **时间戳(timestamp)**...
- **5.1.7 composite-id**:描述如何映射复合主键。 - **5.1.8 鉴别器 (discriminator)**:介绍如何使用鉴别器来区分不同子类的实例。 - **5.1.9 版本 (version) (可选)**:说明版本属性的作用。 - **5.1.10 ...
#### 四、联合主键 在Hibernate中,可以使用复合主键来表示具有多个字段作为主键的实体。以下是一种定义复合主键的方法: ```xml <composite-id> <key-property name="stuName"></key-property> <key-property ...
- **复合主键**:使用 `composite-id` 元素定义复合主键。 - **鉴别器**:`discriminator` 元素用于多表继承映射时区分不同子类。 - **版本号**:`version` 元素用于实现乐观锁。 - **时间戳**:`timestamp` 元素...
- 联合主键(Composite Key):当表的主键由多个字段组成时,可以使用@NaturalId或@EmbeddedId注解来定义。 - 映射关联关系:包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多...
1. 使用`@IdClass`或XML中的`composite-id`定义联合主键。 2. 联合主键需要重写equals和hashCode方法,实现Serializable接口。 七、Hibernate核心接口 1. `Configuration`接口: - 提供了管理配置信息的方法,用于...
- **composite-id**:复合主键。 - **discriminator**:用于区分不同子类的字段。 - **version**:版本字段,用于实现乐观锁。 - **timestamp**:时间戳字段。 - **property**:普通属性字段的映射。 - **many-to-...
- **5.1.5 composite-id**:复合主键的映射。 - **5.1.6 鉴别器**:用于多态继承时区分具体子类。 - **5.1.7 版本**:乐观锁机制,防止并发更新冲突。 - **5.1.8 timestamp**:自动记录实体的修改时间戳。 - **...
【hibernate】知识点详解: ...这些知识点覆盖了 Hibernate 的基础配置、映射机制、关系映射、主键生成、查询语言、API 使用及对象状态管理等方面,对初级程序员来说,理解并掌握这些内容是学习 Hibernate 的重要基础。
对于那些需要多个字段作为主键的表,可以使用`@IdClass`或`@EmbeddedId`来定义联合主键。 12. 集合映射(Collection Mapping): Hibernate支持一对多、多对一、一对一和多对多的关系映射,如`@OneToMany`、`@...