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.any(column="userId", class=User.class) private List<Order> orders; ``` ##### 2.2 @hibernate.array (0..1) **功能描述**:声明一个数组类型的属性。 **参数**: - **type**: 数组元素的类型。 -...
* Oracle (any version):org.hibernate.dialect.OracleDialect * Oracle 9i/10g:org.hibernate.dialect.Oracle9Dialect * Sybase:org.hibernate.dialect.SybaseDialect * Sybase Anywhere:org.hibernate.dialect...
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 ...
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. 使用...
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. 使用...
映射到"任意"(any)类型 5.3. SQL中引号包围的标识符 5.4. 映射文件的模块化(Modular mapping files) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent Collections) 6.2. 映射集合...
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. 使用...
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 详解 #### 一、设置一个注解项目 **1.1 要求** 在开始之前,确保你的开发环境满足以下要求: - Java SE 5 或更高版本。 - 支持 EJB 3 或 JPA 的容器。 - Hibernate 3.4.0.GA 或更高...
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. 使用...
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...
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 ...
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
此外,通过“any”映射,可以将一个属性映射到任何Java类型,增加了灵活性。 6. **SQL与DDL**:Hibernate允许开发者自定义SQL语句和DDL(Data Definition Language),用于创建、更新和删除数据库表结构。通过使用...
- **Any**:特殊映射类型,用于处理非标准数据类型。 - **属性(Properties)**:实体类中属性的具体映射规则。 以上内容覆盖了Hibernate中文官方文档3.6的核心知识点,有助于读者深入理解和掌握Hibernate框架的...
- **映射到"任意"(any)类型**:一种特殊的数据类型映射方式,用于存储任意类型的对象。 - **SQL中引号包围的标识符**:如何在映射文件中引用数据库中的标识符。 - **映射文件的模块化**:将大型映射文件拆分为更小...
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. 使用 ...