花了2个小时的时间解决这个问题,网上资料太少,记录下
 
 
详情看源文件TBicPrmCompute,TBicPrmComputePK
package com.isoftstone.core.domain;

import java.io.Serializable;
import javax.persistence.*; /**
* The persistent class for the T_BIC_PRM_COMPUTE database table.
*
*/
@Entity
@NamedQueries( {
@NamedQuery(name = "findPrmComputeById", query = "select d from TBicPrmCompute d where d.id.CBisCode = ?1 and d.id.CBicNo = ?2 and d.id.CProdNo = ?3")
} )
@Table(name="T_BIC_PRM_COMPUTE")
public class TBicPrmCompute implements Serializable {
private static final long serialVersionUID = 1L;
private TBicPrmComputePK id;
private String cBsnsTyp;
private String cCmpnyAgtCde;
private String cSlsCde;
private String cYl1;
private String cYl2;
private Double nMaxInsrntTm;
private Double nMinInsrntTm;
private Double nRate;
private Double nTotalAmt; public TBicPrmCompute() {
} @EmbeddedId
public TBicPrmComputePK getId() {
return this.id;
} public void setId(TBicPrmComputePK id) {
this.id = id;
} @Column(name="C_BSNS_TYP")
public String getCBsnsTyp() {
return this.cBsnsTyp;
} public void setCBsnsTyp(String cBsnsTyp) {
this.cBsnsTyp = cBsnsTyp;
} @Column(name="C_CMPNY_AGT_CDE")
public String getCCmpnyAgtCde() {
return this.cCmpnyAgtCde;
} public void setCCmpnyAgtCde(String cCmpnyAgtCde) {
this.cCmpnyAgtCde = cCmpnyAgtCde;
} @Column(name="C_SLS_CDE")
public String getCSlsCde() {
return this.cSlsCde;
} public void setCSlsCde(String cSlsCde) {
this.cSlsCde = cSlsCde;
} @Column(name="C_YL1")
public String getCYl1() {
return this.cYl1;
} public void setCYl1(String cYl1) {
this.cYl1 = cYl1;
} @Column(name="C_YL2")
public String getCYl2() {
return this.cYl2;
} public void setCYl2(String cYl2) {
this.cYl2 = cYl2;
} @Column(name="N_MAX_INSRNT_TM")
public Double getNMaxInsrntTm() {
return this.nMaxInsrntTm;
} public void setNMaxInsrntTm(Double nMaxInsrntTm) {
this.nMaxInsrntTm = nMaxInsrntTm;
} @Column(name="N_MIN_INSRNT_TM")
public Double getNMinInsrntTm() {
return this.nMinInsrntTm;
} public void setNMinInsrntTm(Double nMinInsrntTm) {
this.nMinInsrntTm = nMinInsrntTm;
} @Column(name="N_RATE")
public Double getNRate() {
return this.nRate;
} public void setNRate(Double nRate) {
this.nRate = nRate;
} @Column(name="N_TOTAL_AMT")
public Double getNTotalAmt() {
return this.nTotalAmt;
} public void setNTotalAmt(Double nTotalAmt) {
this.nTotalAmt = nTotalAmt;
} }
package com.isoftstone.core.domain;

import java.io.Serializable;
import javax.persistence.*; /**
* The primary key class for the T_BIC_PRM_COMPUTE database table.
*
*/
@Embeddable
public class TBicPrmComputePK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
private String cProdNo;
private String cBisCode;
private String cBicNo; public TBicPrmComputePK() {
} @Column(name="C_PROD_NO")
public String getCProdNo() {
return this.cProdNo;
}
public void setCProdNo(String cProdNo) {
this.cProdNo = cProdNo;
} @Column(name="C_BIS_CODE")
public String getCBisCode() {
return this.cBisCode;
}
public void setCBisCode(String cBisCode) {
this.cBisCode = cBisCode;
} @Column(name="C_BIC_NO")
public String getCBicNo() {
return this.cBicNo;
}
public void setCBicNo(String cBicNo) {
this.cBicNo = cBicNo;
} public boolean equals(Object other) {
if (this == other) {
return true;
}
if (!(other instanceof TBicPrmComputePK)) {
return false;
}
TBicPrmComputePK castOther = (TBicPrmComputePK)other;
return
this.cProdNo.equals(castOther.cProdNo)
&& this.cBisCode.equals(castOther.cBisCode)
&& this.cBicNo.equals(castOther.cBicNo); } public int hashCode() {
final int prime = 31;
int hash = 17;
hash = hash * prime + this.cProdNo.hashCode();
hash = hash * prime + this.cBisCode.hashCode();
hash = hash * prime + this.cBicNo.hashCode(); return hash;
}
}
 
关键是查询JPQL的写法费了较久时间
@NamedQueries( {
     @NamedQuery(name = "findPrmComputeById", query = "select d from TBicPrmCompute d where d.id.CBisCode = ?1 and d.id.CBicNo = ?2 and d.id.CProdNo = ?3")
} )
 
 
DAOImpl实现类
     @Transactional
     @Override
     public TBicPrmCompute findPrmComputeById(String cBisCode, String cBicNo, String cProdNo)
               throws DataAccessException {
          Query query = createNamedQuery("findPrmComputeById", -1, -1, cBisCode, cBicNo, cProdNo);
          return (TBicPrmCompute) query.getSingleResult();
     }
 
 
调用接口
TBicPrmCompute tBicPrmCompute = prmComputeDAO.findPrmComputeById(cBisCode, cBicNo, cProdNo);
 
 
需要注意的是
     @EmbeddedId
     public TBicPrmComputePK getId() {
          return this.id;
     }
 
一般写JPQL的属性是from EntityA d where d.PropertyGetName
但是由于联合主键对象需要用来作JPQL的条件,看上面的联合主键ID,比如想拿ID中的A属性作条件,写法是d.id.A=?1
这里不是get方法的名字呢,直接是属性名字后再是get方法名字getA()去掉get之后的A

JPA联合主键@EmbeddedId使用详解附查询例子的更多相关文章

  1. JPA联合主键

    联合主键也就是说需要多个字段才能确定数据库记录中的唯一一行.这样就需要多个字段一起,组成主键,也叫联合主键.例如飞机航线,我们需要知道飞机起飞的地点以及飞机降落的地点.所以需要飞机起飞的地点和降落的地 ...

  2. Hibernate入门之主键生成策略详解

    前言 上一节我们讲解了Hibernate命名策略,从本节我们开始陆续讲解属性.关系等映射,本节我们来讲讲主键的生成策略. 主键生成策略 JPA规范支持4种不同的主键生成策略(AUTO.IDENTITY ...

  3. Hibernate主键生成策略详解

    转载自:http://blog.csdn.net/wanghuan203/article/details/7562395 hibernate提供的主键生成策略,使我们可以在实体类的映射xml文件中设定 ...

  4. Java 序列化Serializable详解(附详细例子)

    Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是 ...

  5. JPA学习---第十二节:JPA中的联合主键

    1.定义实体类,代码如下: (1).将联合主键放到一个类中,代码如下: package learn.jpa.entity; import java.io.Serializable; import ja ...

  6. JPA 系列教程13-复合主键-@EmbeddedId+@Embeddable

    复合主键 指多个主键联合形成一个主键组合 需求产生 比如航线一般是由出发地及目的地确定,如果要确定唯一的航线就可以用出发地和目的地一起来表示 ddl语句 同复合主键-2个@Id和复合主键-2个@Id+ ...

  7. JPA注解实现联合主键

    当表中一个主键不能唯一标识一条记录的时候,就需要使用联合主键了,下面是使用JPA注解实现联合主键的代码 1 首先需要建立一个复合主键类,用来存放需要生产联合主键的属性,该类需要实现序列化. packa ...

  8. hibernate 注解 联合主键映射

    联合主键用Hibernate注解映射方式主要有三种: 第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将 该类注解 ...

  9. Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/A ...

随机推荐

  1. JS动态计算移动端rem的解决方案

    首先介绍下rem 说起rem就的说px,em: PX为单位 在Web页面初期制作中,我们都是使用“px”来设置我们的文本,因为他比较稳定和精确.但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的 ...

  2. [BZOJ 1177] Oil

    Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1177 Solution: 相当于将大矩形分为3块,取每块中最大的正方形 对于此类分成几块 ...

  3. HDOJ 5385 The path

    Dicription You have a connected directed graph.Let $d(x)$ be the length of the shortest path from $1 ...

  4. 【状压DP】旅行商问题

    给定一张带权有向图,要求从顶点0出发,经过每个结点恰好一次后再返回0,求边权和的最小值. 2<=n<=15 0<=d(i,j)<=1000 样例 5 80 1 30 3 41 ...

  5. [CF607D]Power Tree

    题目大意: 一棵树初始只有一个编号为$1$的权值为$w_1$的根.$q(q\le2\times10^5)$次操作,每次可以给出$v,w(w<10^9)$,新建一个结点作为$v$的子结点,权值为$ ...

  6. 13test02:阶乘

    //假设32位int型变量y是表示最大人数的x的阶乘,即y=x!,当x最大值取什么时,y取最大值 //,且乘法不溢出. #include<iostream> using namespace ...

  7. [OpenJudge8462][序列DP]大盗阿福

    大盗阿福 总时间限制: 1000ms 内存限制: 65536kB [描述] 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每家店中都有一些现金. ...

  8. golang的reflect

    引用自 http://www.jb51.net/article/115002.htm 和 C 数据结构一样,Go 对象头部并没有类型指针,通过其自身是无法在运行期获知任何类型相关信息的.反射操作所需要 ...

  9. Jackson错误:Can not deserialize instance of java.lang.String out of START_OBJECT token

    org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not des ...

  10. glib wpa_supplicant Unix上库编译错误解决与总结

    编译Linux下的库是一件痛苦的事情,这里主要阐述glib和wpa_supplicant库的编译,因各自的依赖关系,另外一些库要事先编译.glib依赖libffi和zlib,而wpa_supplica ...