hibernate里联合主键composite-id映射,查询单个主键的问题(转)

今天项目中遇到这个问题,搞了大半天,我郁闷...
hibernate里联合主键配置(多个字段一起作为主键)

<class name="com.cskj.hibernate.map.BbWjjc" table="bb_wjjc" schema="dbo" catalog="wjgl">
        <composite-id name="id" class="com.cskj.hibernate.map.BbWjjcId">
            <key-property name="wjtmid" type="java.lang.Long">
                <column name="wjtmid" />
            </key-property>
            <key-property name="wjxxid" type="java.lang.Long">
                <column name="wjxxid" />
            </key-property>
            <key-property name="wjzxxid" type="java.lang.Long">
                <column name="wjzxxid" />
            </key-property>
            <key-property name="wjztmid" type="java.lang.Long">
                <column name="wjztmid" />
            </key-property>
            <key-property name="wjid" type="java.lang.Long">
                <column name="wjid" />
            </key-property>
        </composite-id>

主键的生成文件

public class BbWjjcId implements java.io.Serializable {

private Long wjtmid;
 private Long wjxxid;
 private Long wjzxxid;
 private Long wjztmid;
 private Long wjid;
。。。

查询单个主键时用HQL语句

from BbWjjc bw where bw.BbWjjcId.wjid=? 
结果报错:
 could not resolve property: BbWjjcId of: com.cskj.hibernate.map.BbWjjc [from com.cskj.hibernate.map.BbWjjc bw where bw.BbWjjcId.wjid=‘5‘]

上网查了一下,说是hql语句的问题.
测试了大半天结果调试正常了,原来是bw.BbWjjcId.wjid=?中的BbWjjcId要写映射xml中的name(即:id),不能写PK类名字.
正确的HQL: from BbWjjc bw where bw.id.wjid=?艰难搞定!!!

时间: 2024-08-01 19:59:54

hibernate里联合主键composite-id映射,查询单个主键的问题(转)的相关文章

hibernate里联合主键composite-id映射,查询单个主键的问题

今天项目中遇到这个问题,搞了大半天,现在记录下来hibernate里联合主键配置(多个字段一起作为主键) <class name="com.cskj.hibernate.map.BbWjjc" table="bb_wjjc" schema="dbo" catalog="wjgl"> <composite-id name="id" class="com.cskj.hibernate

hibernate关联映射【一对一主键】

从三个部分介绍Hibernate一对一主键关联映射. 1.基本介绍2.代码展示3.总结注意  1.基本介绍 一对一关联有两种情况: 单向一对一主键关联.双向一对一主键关联.一对一主键关联: 是指两个表之间通过主键形成一对一的映射,例如,每个公民只允许拥有一个身份证,公民与身份证就是一对一的关系,定义两张表,一张People表,一张IdCard表,People表的id既是该表的主键也是该表的外键,并且People的id也就是IdCard的id, 2.代码 单向一对一主键关联:people表的id既

Hibernate之关联关系映射(一对一主键映射和一对一外键映射)

1:Hibernate的关联关系映射的一对一外键映射: 1.1:第一首先引包,省略 1.2:第二创建实体类: 这里使用用户信息和身份证信息的关系,用户的主键编号既可以做身份证信息的主键又可以做身份证信息的外键,这里先做外键. 创建User.java: 用户和身份证一对一的关联关系映射       private IdCart idCart; IdCart.java: 身份证和用户,一对一的关系       private User user; 1 package com.bie.bean; 2

【SSH之旅】一步步学习Hibernate框架(二):一对一关联映射中的主键关联

一对一的映射在对象模型中是经常见到的,主要是将对象模型转换为关系模型就必须在映射文件中进行配置,重点是<one-to-one>标签的使用,有两种方式,第一是主键关联,第二是唯一外键关联,现在先来看第一种方式. 一对一的关联映射中的主键关联,就是说两个对象具有相同的主键值,以表明它们之间的一一对应的关系,数据库表不会有额外的字段来维护它们之间的关系,仅仅是通过表的主键来关联. 上图的Person类和IdCard类之间是一一对应关系,一个人就只能有一个身份证,一个身份证只能对应一个人,那么身份证的

Entity Framework 无法对没有主键的视图映射实体的解决办法

我们在使用Entity Framework的时候经常会把数据库中的某一个视图映射为EF的实体,但是如果数据库视图中的列没有包含表的主键列,EF会报出警告说视图没有主键,导致映射为实体失败错误如下: 表/视图“{0}”未定义主键,无法推断有效的主键.已排除该表/视图.要使用该实体,您将需要检查架构,添加正确的键并对它取消注释. English translation: The table/view '{0}' does not have a primary key defined and no v

SQLITE数据表主键设置Id自增方法

SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报  分类: SQL(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. 搞定了一个困扰许久的问题,原来sqlite中的主键也是可以设置为自增的:)方法就是声明为 INTEGER PRIMARY KEY 的字段可以自动增加.    网上查到资料说,从 SQLite 的 2.3.4 版本开始,如果将一个表

把联合主键作为另一个表的外键

1.问题:如果表A(a int ,b int),其中a,b 是联合主键; 表B(a int,b int,c int),c是B的主键,其中a,b是外键对A的a,b ,问如何实现? 2.实现: create table A( a int, b int ); create table B( a int, b int, c int  primary key ); alter table A add constraint Primary Key(a,b); alter table B constraint

Hibernate—— 一对多 和 多对多关联关系映射(xml和注解)总结(转载)

One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XML/Annotation) 懒加载和积极加载 一对多双向外键关联(XML/Annotation) Many to Many 映射关系 多对多单向外键关联(XML/Annotation) 多对多双向外键关联(XML/Annotation) set的inverse元素详解 问题小结 关联关系的优缺点 多对一单向外键关联关系 注意多对一关联是多方持有一方的引用.看一个例子,去淘宝购物,那么一个

Hibernate (开放源代码的对象关系映射框架)

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久