Hibernate createQuery调用joincolumn

1. Beans

a. Version Bean

package locationService.beans;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.*;

import org.hibernate.annotations.GenericGenerator;

import locationService.beans.Entities;
import locationService.beans.Attribute;
import locationService.beans.AttributeTag;
import locationService.beans.EntityToEntity;
import locationService.beans.Tag;

@Entity
@Table(name = "version")
public class Version {
  private int versionId;
  private boolean complete;
  private Timestamp editDate;
  private String author;
  private String description;
  private int preVersionId;
  private List<Entities> entities = new ArrayList<Entities>();
  private List<Attribute> attribute = new ArrayList<Attribute>();
  private List<AttributeTag> attributeTag = new ArrayList<AttributeTag>();
  private List<EntityToEntity> entityToEntity = new ArrayList<EntityToEntity>();
  private List<Tag> tag = new ArrayList<Tag>();

  @Id
  @GeneratedValue(generator = "increment")
  @GenericGenerator(name = "increment", strategy = "increment")
  @Column(name="version_id")
  public int getVersionId() {
	return versionId;
  }
  public void setVersionId(int versionId) {
	this.versionId = versionId;
  }

  @Column(name="complete")
  public boolean getComplete() {
	return complete;
  }
  public void setComplete(boolean complete) {
	this.complete = complete;
  }

  @Column(name="edit_date")
  public Timestamp getEditDate() {
	return editDate;
  }
  public void setEditDate(Timestamp editDate) {
	this.editDate = editDate;
  }

  @Column(name="author")
  public String getAuthor() {
	return author;
  }
  public void setAuthor(String author) {
	this.author = author;
  }

  @Column(name="description")
  public String getDescription() {
	return description;
  }
  public void setDescription(String description) {
	this.description = description;
  }

  @Column(name="pre_version_id")
  public int getPreVersionId() {
	return preVersionId;
  }
  public void setPreVersionId(int preVersionId) {
	this.preVersionId = preVersionId;
  }

  @OneToMany(cascade = CascadeType.ALL)
  @JoinColumn(name = "version_id", nullable = false)
  public List<Entities> getEntities() {
	return entities;
  }
  public void setEntities(List<Entities> entities) {
	this.entities = entities;
  }

  @Override
  public String toString() {
    return "versionId is " + versionId + ", preVersionId is " + preVersionId + ", author is " + author;
  }

}

b. Entities Bean

package locationService.beans;

import javax.persistence.*;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name = "entities")
public class Entities {
  private int entityId;
  private String label;
  public enum entityType {
	 location, group;
  } 

  private entityType locationOrGroup;
  @Id
  @Column(name="entity_id")
  public int getEntityId() {
	return entityId;
  }
  public void setEntityId(int entityId) {
	this.entityId = entityId;
  }

  @Column(name="label")
  public String getLabel() {
	return label;
  }
  public void setLabel(String label) {
	this.label = label;
  }

  @Column(name="location_or_group")
  @Enumerated(EnumType.STRING)
  public entityType getLocationOrGroup() {
	return locationOrGroup;
  }
  public void setLocationOrGroup(entityType locationOrGroup) {
	this.locationOrGroup = locationOrGroup;
  }

  @Override
  public String toString() {
    return "entityId is " + entityId + ", label is " + label + ", locationOrGroup is " + locationOrGroup;
  }

}

2. Call Method

  /**
   * Check whether this entities id has been in the version
   */
  public boolean checkEntitiesPK (Version version, int entityId) {
    Session session = Config.getSessionFactory().openSession();
    session.beginTransaction();

    int versionId = version.getVersionId();

    Query query = session.createQuery("from Entities where entityId = :entityId and version_id = :versionId");
    query.setParameter("entityId", entityId);
    query.setParameter("versionId", versionId);

    @SuppressWarnings("unchecked")
    List<Entities> o = query.list();
    if (o == null || o.size() == 0){
    	return false;
    }

	return true;
  }

  

时间: 2024-08-02 15:12:52

Hibernate createQuery调用joincolumn的相关文章

Hibernate中调用带有underscore的Column Name

Hibernate中默认的NamingStrategy不支持调用带有下划线的column name.在hibernate的bean中必须使用camel case.使用ImprovedNamingStrategy可以使hibernate成功map到带有下划线的column name.代码如下: 1. Configure文件 public static SessionFactory getSessionFactory() { if (sessionFactory == null) { Configu

Hibernate不调用update却自动更新

案例: TInfCustomer cus = (TInfCustomer) this.baseDao.getOne(helper); cus.setXXX cus .setXXX 不调用update也写入数据库 原因: hibernate在每个session里都会做些处理,比如把查询过的对象缓存起来什么,这个时候这些对象的实例是和数据库保持关联的,hibernate会记录session生命周期内所有缓存对象的操作过程,最后都会反映到数据库去,也就是所谓的托管状态,所以才会有自动更新这种问题.只要

hibernate createQuery查询传递参数的两种方式

String hql = "from InventoryTask it where it.orgId=:orgId"; Session session = getSession(); Query query=session.createQuery(hql); query.setString("orgId",orgId); List list = query.list(); if(list!=null&&list.size()!=0){ return

hibernate不调用save也保存上了

1 List<Instrument> insts = instService.search(search); 2 3 if (insts.size() == 1) { 4 Instrument inst = insts.get(0); 5 6 if (inst != null) { 7 8 inst.setBarCode("imported"); 9 10 instService.save(inst) 11 12 } 13 } 第10行加不加都会保存上.所有以下的方式应该避

Hibernate调用Oracle的存储过程

众所周知,当过多的使用存储过程,触发器等 数据库方言相关的应用时,应用程序的移植性会变差,特别是在Hibernate中使用这些,简直是讽刺,但是当今中国又有哪家公司做项目会关心应用程序的移植性呢? 现在看看Hibernate中对Oracle存储过程的调用. 1.plsql 代码 create Procedure proc() begin select * from proctab; end; 1 create procedure proc1(v_no number(4)) 2 begin 3 s

Hibernate 优化技术之调用视图(View)和存储过程(Procedure)

前言 上一篇blog记录了hibernate抓取策略的相关用法(http://blog.csdn.net/wlwlwlwl015/article/details/42705585),它主要是在对象导航时为我们进行HQL方面的优化.本篇blog将介绍一些通用性的优化方式,即在hibernate中使用视图和存储过程.在数据量比较大时(百万级),使用hibernate时不再推荐使用HQL,而是使用原生的SQL语句,而视图.索引.存储过程等数据库对象也都是基于底层数据库和原生的SQL派生出的优化方案,废

Hibernate 之HQL数据查询

1. HQL简介 HQL是面向对象的查询语言,与SQL查询语言相比,虽然在语法上类似,都是运行时进行解析,但HQL并不像SQL那样操作的是数据表,列等数据库对象,HQL所操作的对象是类,对象,属性等.它也可以支持继承和多态等特征,在Hibernate 提供的各种检索方式中,HQL是使用最广泛的. 2. Query接口 Hibernate框架负责解析HQL语句,根据映射配置信息,把HQL查询语句解析成相应的SQL语句来执行数据库的查询操作.这一过程依赖的就是Query接口.Query的实例由Ses

说说 Hibernate 的映射策略

1 基本属性映射 持久化类属性的 JPA 规则是: 持久化类的属性如果是基本类型或者基本类型的包装器,诸如 String, BigInteger, BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp, byte[], Byte[], char[], Character[],它们会被自动持久化. 如果一个类加了 @Embeddable 注解,表明这个类是属于

Hibernate+Spring+Struts2整合开发中的一个分页显示方案(转载)

分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流. 1.DAO层接口的设计,在MemberDao接口中定义了如下两个方法: public interface MemberDao{        //省略了其他的代码        /**     * 分页查询     * @