hibernate 注解
@OneToOne(fetch=FetchType.EAGER) @JoinColumn(name = "organCode",insertable=false,updatable=false)
insertable=false,updatable=false
这句话的含义是:可以不用hibernate自己生成organ_code ,自己定这个外键字段!
package com.ibm.banking.irmp.riskforecast; import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Transient; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.NamedQueries; import org.hibernate.annotations.NamedQuery; import com.ibm.banking.auth.user.Organization; import com.ibm.banking.framework.dto.BaseVO; @Entity @Table(name = "RI_PT_RISK_FORECAST") @NamedQueries({ @NamedQuery(name = "forecast.getAll", query = "select rf from RiskForecast as rf where rf.organCode=:organCode and rf.busiDt=:busi_dt ", readOnly = true, cacheable = true, cacheRegion = "RefBean")}) // @FilterDef(name = "menuActiveFilter", defaultCondition = "active = '1'") @Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = "RefBean") public class RiskForecast implements BaseVO, Serializable { /** * */ private static final long serialVersionUID = -1775217126870109241L; @Id @GeneratedValue private Long id; private Integer busiDt; private Organization org; private String organCode; // 资产分类 private String assetsCode; // 资产名称 private String assetsName; // 情景变化前 private String changesBefore; // 久期(情景变化后) private String changesAfter; // β系数 private String coefficient; // 凸性 private String convexity; // 到期收益率 private String yieldMaturity; public Integer getBusiDt() { return busiDt; } public void setBusiDt(Integer busiDt) { this.busiDt = busiDt; } public String getOrganCode() { return organCode; } public void setOrganCode(String organCode) { this.organCode = organCode; } @OneToOne(fetch=FetchType.EAGER) @JoinColumn(name = "organCode",insertable=false,updatable=false) public Organization getOrg() { return org; } public void setOrg(Organization org) { this.org = org; } public String getAssetsCode() { return assetsCode; } public void setAssetsCode(String assetsCode) { this.assetsCode = assetsCode; } public String getAssetsName() { return assetsName; } public void setAssetsName(String assetsName) { this.assetsName = assetsName; } public String getChangesBefore() { return changesBefore; } public void setChangesBefore(String changesBefore) { this.changesBefore = changesBefore; } public String getChangesAfter() { return changesAfter; } public void setChangesAfter(String changesAfter) { this.changesAfter = changesAfter; } public String getCoefficient() { return coefficient; } public void setCoefficient(String coefficient) { this.coefficient = coefficient; } public String getConvexity() { return convexity; } public void setConvexity(String convexity) { this.convexity = convexity; } public String getYieldMaturity() { return yieldMaturity; } public void setYieldMaturity(String yieldMaturity) { this.yieldMaturity = yieldMaturity; } public void setId(Long id) { this.id = id; } @Transient public Serializable getId() { return id; } }
相关推荐
### Hibernate的查询方式详解 #### 引言 Hibernate作为Java领域中最流行的ORM(Object-Relational Mapping)框架之一,提供了一系列高效、灵活的查询机制,旨在桥接对象模型与关系数据库之间的鸿沟。本文将深入...
命名查询是在Hibernate配置文件(如Query.hbm.xml)中预定义的HQL或Criteria查询,具有良好的可读性和可维护性。例如,在Query.hbm.xml中定义一个命名查询: ```xml <hibernate-mapping> <!-- ... --> from ...
本文将详细介绍Hibernate的五种查询方式,包括HQL查询、Criteria方法、动态查询DetachedCriteria、例子查询、SQL查询以及命名查询,以满足不同场景下的需求。 1. HQL查询: Hibernate Query Language(HQL)是一种...
在`hibernate.cfg.xml`或实体类的`@NamedQuery`注解中定义命名查询: ```xml FROM Student WHERE age > 20 ``` 在代码中使用: ```java Query query = session.getNamedQuery("getStudentsOverAge"); ...
“Hibernate 级联查询”是指在使用Hibernate这个Java持久化框架时,如何处理对象之间的关联查询。Hibernate提供了级联操作来简化数据的保存、更新和删除等操作,使得开发者无需手动编写复杂的SQL语句,就能实现关联...
在Java持久化框架Hibernate中,命名查询是一种强大的功能,它允许开发者在映射文件中预定义HQL(Hibernate Query Language)或SQL查询,从而提高代码的可读性和可维护性。这种方式将查询语句与业务逻辑分离,使得...
### Hibernate中的查询方式详解 #### 一、HQL查询(Hibernate Query Language) HQL是Hibernate提供的面向对象的查询语言,其语法与SQL相似但并非完全相同。HQL的一个显著优势在于它具有很好的跨数据库能力,这...
为解决这个问题,Hibernate提供了一种分页查询的方法。通过设置`firstResult`(起始索引)和`maxResults`(最大返回结果数)参数,我们可以指定每次查询的数据范围。例如,如果我们想要获取第5页,每页显示10条记录...
- `findByNamedQuery(queryName, params)`: 使用预定义的命名查询,这些查询可以在`hbm.xml`映射文件中定义,或通过`@NamedQuery`注解在实体类上声明。 - `countByExample(entity)`: 计算满足特定条件的记录数,...
1. **命名参数**: 在HQL查询中推荐使用命名参数而非位置参数,因为命名参数更易于理解和维护。 2. **性能优化**: 对于大型数据集,应考虑使用`setFirstResult`和`setMaxResults`进行分页查询以提高效率。 3. **错误...
本文将深入探讨Hibernate的命名策略,包括显式命名、隐式命名以及过滤命名。 1. **显式命名** 显式命名策略允许开发者在映射配置中明确指定数据库表名、列名等。例如,在`@Table`注解中设置`name`属性,即为显式...
### Hibernate查询解决方案详解 #### 一、概述 Hibernate 是一个开放源代码的 ORM(对象关系映射)框架,它提供了从 Java 类到数据库表的映射机制,以及数据的查询和获取方式。Hibernate 的核心功能之一是提供了...
如果某些查询模式经常被使用,可以定义命名查询,将其写入XML映射文件中,以提高代码可读性和复用性。 6. **动态HQL**: 对于更动态的查询,可以构建HQL字符串,但这可能会引入SQL注入风险,因此要确保正确处理...
总结起来,熟练掌握Hibernate HQL的命名参数和Query接口的分页查询是提高数据操作效率的关键。同时,注意处理可能出现的数据库关键字冲突问题,确保ORM映射的正确性。通过这些技巧,开发者可以更好地控制和优化...
命名查询是一种使用Hibernate的命名查询机制的方式。示例代码: ```java static void query(String name){ Session s=null; try{ s=HibernateUtil.getSession(); Query query=s.getNamedQuery("Admin.getByName...
本文介绍了三种利用Hibernate实现动态表查询的方法:自定义命名策略、使用拦截器以及利用Session的开放性。每种方法都有其适用场景,开发者可以根据实际需求选择最合适的一种。例如,在需要频繁更改表名的情况下,...
Hibernate查询语言,作为Java开发中持久化框架的重要组成部分,提供了丰富的查询机制,使得开发者能够方便地操作数据库。本文主要探讨Hibernate中的查询语言,包括面向对象的查询语言HQL,QueryBy Criteria (QBC),...
外置命名查询是在Hibernate配置文件中预先定义好的HQL或SQL查询,可以在代码中直接调用,提高代码可读性和复用性。 ```xml <!-- 在hibernate.cfg.xml或对应的hibernate映射文件中 --> from Student where name = ...
定义预编译的命名查询,提高性能,例如: ```java @NamedQuery(name="User.findAll", query="SELECT u FROM User u") ``` 2. `@Query` JPA的动态查询,可以直接在注解中编写HQL或JPQL查询语句。 六、事务...
### Hibernate HQL 查询详解 #### 一、HQL 概述 Hibernate 提供了一种非常强大的查询语言——HQL(Hibernate Query Language),它在语法上与 SQL 类似但功能更为强大,因为它支持面向对象的特性,例如继承、多态性...