`
keating
  • 浏览: 170069 次
  • 性别: Icon_minigender_1
  • 来自: weihai
社区版块
存档分类
最新评论

JPA2.0使用Map (2) 双向一对多,令人湿望的Hibernate

    博客分类:
  • Java
阅读更多
@Entity
public class E {
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Id
	int id;
	String name;
	@OneToMany(mappedBy = "e")
	@MapKeyColumn(name = "kkk")
	Map<String,F> f = new HashMap<String,F>();
}

@Entity
public class F {
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Id
	int id;
	String name;
	@ManyToOne
	E e;
}

public class MapRelation {
	public static void main(String[] args) {
		EntityManagerFactory emf = Persistence
				.createEntityManagerFactory("forcascade");
		EntityManager em = emf.createEntityManager();
		em.getTransaction().begin();
		
		E e = new E();
        e.name = "i am e!";
        F f1 = new F();
        f1.name = "i am f1!";
        F f2 = new F();
        f2.name = "i am f2!";

        f1.e = e;
        f2.e = e;
        em.persist(f1);
        em.persist(f2);
        e.f.put("f1", f1);
        e.f.put("f2", f2);
        em.persist(e);

		em.getTransaction().commit();
		em.close();
		emf.close();
	}
}

以上代码,JPA2.0双向一对多,在EclipseLink以及OpenJPA下运行没有问题,两个key "f1"与"f2"都存入数据库。但在Hibernate下,key没有存入数据库,失败鸟...
我们想,双向一对多,没有中间表,One将ID以及key存在Many表中,那么,应该可以在Many中设置One的persist cascade,最后提交Many既可以了...
	@ManyToOne(cascade = {PERSIST,REMOVE})
	E e;

在transaction之间的代码是这样的了,
        E e = new E();
        e.name = "i am e!";

        F f1 = new F();
        f1.name = "i am f1!";
        f1.e = e;
        e.f.put("f1", f1);
        em.persist(f1);

        F f2 = new F();
        f2.name = "i am f2!";
        f2.e = e;
        e.f.put("f2", f2);
        em.persist(f2);

高兴的是,EclipseLink与OpenJPA仍然没有让我们失望;杯具地是,Hibernate仍然让我们失望了...
分享到:
评论

相关推荐

    JPA 2.0jar包及JPA2.0源代码

    在这个`persistence-2.0-all.zip`压缩包中,包含了JPA 2.0的核心库`javax.persistence_2.0.0.jar`,源代码,JavaDoc文档,以及一个schema文件,这些都是开发者深入了解和使用JPA 2.0的重要资源。 **JPA 2.0 的核心...

    JPA2.0高级教程

    - **一对多、多对一映射**:使用`@ManyToOne`、`@OneToMany`等注解表示一对多或多对一的关系。 - **多对多映射**:使用`@ManyToMany`注解表示多对多的关系。 #### 三、高级主题 ##### 3.1 查询语言 - **JPQL**:...

    spring3.0.5与JPA2.0(hibernate3.6)的集成详细说明

    2. **添加依赖**:确保你的项目包含Spring、Hibernate(JPA实现)和JPA相关的库。在Maven或Gradle的pom.xml或build.gradle文件中,添加相应的依赖项。 3. **实体类**:编写表示数据库表的Java类,并使用JPA注解如@...

    jpa2.0jar包

    - "hibernate-JPA"可能是指Hibernate作为JPA的实现, Hibernate提供了丰富的功能,包括第一级缓存、第二级缓存、事务管理等,使得JPA的使用更加方便。 总之,JPA 2.0为Java开发者提供了强大且灵活的ORM解决方案,...

    jpa2.0 规范文档.zip

    Java persistence api, jpa 2.0最终版使用规范, 资源是压缩包, 下载后解压缩文件,然后重命名persistence-2_0-final-spec文件,添加后缀 .pdf 原始文件的类型时pdf的

    jpa2.0 英文手册

    - jsr-317-***:提供了反馈JPA 2.0规范的电子邮件地址,开发者可以使用此邮箱提交他们对规范的意见和建议。 - Final Release:表示这是JPA 2.0规范的最终版本,意味着规范已经稳定并且可供实现。 - Copyright 2009 ...

    Spring Data JPA 2.0 标准模板

    Spring Data JPA 是 Spring 框架的一个子项目,它简化了数据访问层的开发,提供了对 Java Persistence API(JPA)的高度抽象和自动化。在 Spring Data JPA 2.0 版本中,它引入了更多优化和改进,使得开发者能更高效...

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    jpa 2.0 jar 包 下载

    jpa 2.0 jar 包 下载 jpa 2.0 jar 包 下载 jpa 2.0 jar 包 下载

    一.初识JPA2.0

    JPA支持多种关系映射,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)。通过这些注解,可以轻松地处理实体之间的关联关系。 6. **事务管理** JPA 2.0提供了一套完整...

    JPA2.0(hibernate-3.5.2实现)jar文件整理上传

    antlr-2.7.6.jar, cglib-2.2.jar, commons-collections-3.1.jar, ...hibernate-jpa-2.0-api-1.0.0.Final.jar, javassist-3.9.0.GA.jar, jta-1.1.jar, slf4j-api-1.6.1.jar, slf4j-log4j12-1.6.1.jar

    JPA2.0-Spring2.x-Struts2注解

    主要讲述JPA2.0规范,Struct2 Spring注解等技术

    hibernate-jpa-2.0-api-1.0.1.Final-sources

    2. **Hibernate JPA的扩展性**:Hibernate是JPA的一个实现,以其强大的功能和灵活性赢得了广泛认可。Hibernate JPA 2.0 API在JPA的基础上进一步提供了丰富的功能,包括事务管理、查询语言HQL和 Criteria API等。 3....

    JPA2.0 javax.persistence src 源码

    5. **关联管理**:JPA支持一对一、一对多、多对一和多对多的关联关系。关联可以通过`@OneToOne`、`@OneToMany`、`@ManyToOne`和`@ManyToMany`注解来定义,同时可以配置懒加载或急加载策略。 6. **继承策略**:JPA...

    Hibernate annotation JPA 一对多,多对多

    在本主题中,我们将深入探讨使用Hibernate注解来实现JPA的一对多、多对多和多对一的关系映射。 1. **一对多关系**: 在现实世界中,一个老师可以教多个学生,或者一个班级可以包含多个学生,这就是典型的一对多...

    openjpa2.0英文版API

    通过以上对 OpenJPA 2.0 文档的部分内容的解读,我们了解了 OpenJPA 2.0 的核心特性和使用方法。它不仅遵循 JPA 规范,还提供了丰富的扩展功能,使得开发者能够更加灵活地实现数据访问逻辑。无论是对于初学者还是...

    JPA_2_一对多双向关联关系

    **JPA 2 一对多双向关联关系** Java Persistence API(JPA)是Java平台上的一个标准,用于处理对象关系映射(ORM),使得开发者可以使用面向对象的方式操作数据库。在JPA中,一对多关联关系是常见的实体间关系类型...

    hibernate-jpa-2.0-api-1.0.0-CR-1.jar

    java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题

Global site tag (gtag.js) - Google Analytics