`

hibernate @any

阅读更多
copy from
http://my.oschina.net/longyuan/blog/337635?p={{page}}#OSC_h3_3
http://www.iteye.com/topic/8900


package com.bjsxt.hibernate.any;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Person {

	private int id;
	private String name;

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

package com.bjsxt.hibernate.any;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Company {

	private int id;
	private String name;

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}


package com.bjsxt.hibernate.any;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;

import org.hibernate.annotations.Any;
import org.hibernate.annotations.AnyMetaDef;
import org.hibernate.annotations.MetaValue;

@Entity
public class Vehicle {
	private int id;
	private String name;

	private Object ownObject;

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Any(metaColumn = @Column(name = "owner_type", length = 3), fetch = FetchType.LAZY)
	@AnyMetaDef(idType = "int", metaType = "string", metaValues = {
			@MetaValue(targetEntity = com.bjsxt.hibernate.any.Person.class, value = "1"),
			@MetaValue(targetEntity = com.bjsxt.hibernate.any.Company.class, value = "2") })
	@JoinColumn(name = "owner_id")
	public Object getOwnObject() {
		return ownObject;
	}

	public void setOwnObject(Object ownObject) {
		this.ownObject = ownObject;
	}

}


package test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

import com.bjsxt.hibernate.any.Company;
import com.bjsxt.hibernate.any.Person;
import com.bjsxt.hibernate.any.Vehicle;

public class TestAny {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Configuration cfg = new AnnotationConfiguration();
		SessionFactory sf = cfg.configure().buildSessionFactory();
		Session session = sf.openSession();
		session.beginTransaction();
		Person p = new Person();
		p.setId(1);
		p.setName("1111111");

		Vehicle v = (Vehicle) session.load(Vehicle.class, 2);
		//Person pe = (Person) v.getOwnObject();
		//System.out.println("p:" + pe.getId() + "name:" + pe.getName());
		Company c = (Company) v.getOwnObject();
		System.out.println("c:" + c.getId() + "name:" + c.getName());
		session.getTransaction().commit();
		session.close();
		sf.close();
		System.out.println("------------------end---------------------");
	}

}



分享到:
评论

相关推荐

    @hibernate Tag Reference

    @hibernate.any(column="userId", class=User.class) private List<Order> orders; ``` ##### 2.2 @hibernate.array (0..1) **功能描述**:声明一个数组类型的属性。 **参数**: - **type**: 数组元素的类型。 -...

    Hibernate不同数据库的连接及SQL方言

    * Oracle (any version):org.hibernate.dialect.OracleDialect * Oracle 9i/10g:org.hibernate.dialect.Oracle9Dialect * Sybase:org.hibernate.dialect.SybaseDialect * Sybase Anywhere:org.hibernate.dialect...

    hibernate-shards.jar

    any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any ...

    Hibernate+中文文档

    5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用...

    hibernate3.2中文文档(chm格式)

    5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用...

    hibernate 教程

    映射到"任意"(any)类型 5.3. SQL中引号包围的标识符 5.4. 映射文件的模块化(Modular mapping files) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent Collections) 6.2. 映射集合...

    HibernateAPI中文版.chm

    5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用...

    Beginning Hibernate, 3rd Edition

    Experienced authors Joseph Ottinger with Dave Minter and Jeff Linwood provide more in-depth examples than any other book for Hibernate beginners. The authors also present material in a lively, ...

    hibernate annotations详解

    ### Hibernate Annotations 详解 #### 一、设置一个注解项目 **1.1 要求** 在开始之前,确保你的开发环境满足以下要求: - Java SE 5 或更高版本。 - 支持 EJB 3 或 JPA 的容器。 - Hibernate 3.4.0.GA 或更高...

    Hibernate中文详细学习文档

    5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用...

    Hibernate 中文 html 帮助文档

    5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet...

    最全Hibernate 参考文档

    5.1.21. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. SQL中引号包围的标识符 5.4. 其他元数据(Metadata) 5.4.1. 使用 XDoclet 标记 5.4.2. 使用 JDK ...

    hibernate-entitymanager-3.2.1.GA

    THIS RELEASE OF HIBERNATE ENTITYMANAGER REQUIRES HIBERNATE CORE 3.2.0.GA (and above) AND DOES NOT WORK WITH HIBERNATE 3.1.x OR ANY OLDER VERSION OF HIBERNAT

    hibernate详解

    此外,通过“any”映射,可以将一个属性映射到任何Java类型,增加了灵活性。 6. **SQL与DDL**:Hibernate允许开发者自定义SQL语句和DDL(Data Definition Language),用于创建、更新和删除数据库表结构。通过使用...

    hibernate中文官方文档3.6

    - **Any**:特殊映射类型,用于处理非标准数据类型。 - **属性(Properties)**:实体类中属性的具体映射规则。 以上内容覆盖了Hibernate中文官方文档3.6的核心知识点,有助于读者深入理解和掌握Hibernate框架的...

    Hibernate 参考文档

    - **映射到"任意"(any)类型**:一种特殊的数据类型映射方式,用于存储任意类型的对象。 - **SQL中引号包围的标识符**:如何在映射文件中引用数据库中的标识符。 - **映射文件的模块化**:将大型映射文件拆分为更小...

    hibernate 体系结构与配置 参考文档(html)

    any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 ...

Global site tag (gtag.js) - Google Analytics