当前位置: 首页 > 面试题库 >

休眠:从核心API切换到JPA API,而无需重写映射

程城
2023-03-14
问题内容

是否可以使用hbm xml Hibernate配置以符合JPA
2.0的方式构建EntityManagerFactory和EntityManager?该文档似乎表明这是不可能的:

“以前的教程使用了特定于Hibernate的hibernate.cfg.xml配置文件。但是,JPA定义了一个不同的引导过程,该过程使用其自己的名为persistence.xml的配置文件。”
— 第4章

我的hbm
xml配置长成千上万行,并且可以工作;我宁愿不必手动将其重写为orm.xml和persistence.xml。我也没有对数据模型的写访问权以添加Hibernate或JPA批注。就我的目的而言,我只需要JPA
API,而不需要JPA配置。

有什么办法可以做到这一点?


问题答案:

是的,有可能。可以通过在persistence.xml中设置以下属性来使用现有映射:

<property name="hibernate.ejb.cfgfile" value="hibernate.cfg.xml"/>

值是hibernate特定配置的路径。也可以使用JPA映射部分覆盖hibernate样式映射。可以从文档中找到其他说明:http : //docs.jboss.org/hibernate/core/4.0/hem/en-
US/html_single#d0e708



 类似资料:
  • 问题内容: 通用实体,超类: pojo: 我尝试使用那些注释:@ AttributeOverride,@ Id等,但是它不起作用。你能帮助我吗?我想覆盖属性“ id”以通过pojo / table指定另一个列名和一个序列。最好的方法是什么? 问题答案: 试试这个,代替

  • 问题内容: 我需要预先将没有实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate是否本身支持此功能?)。 问题答案: 可以创建一个自定义(例如th

  • 问题内容: Hibernate提供的注释支持使用或两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum 的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即休眠尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了可读性。有什么

  • 问题内容: 我有一些实体具有一对一的懒惰关系(为简洁起见,省略了逻辑): 在某些(非常罕见)的情况下,我想热切地加载A及其所有关联的实例。这样做的原因是我想对该A实例及其整个子实例进行一些修改,然后根据用户输入保存或丢弃它们。 如果要按需加载内容,则必须根据用户请求将实体重新附加到新的会话,但是这些实体正在被修改,并且修改不应持久化。 所以我写这样的东西: 当我尝试访问内容时,出现以下异常: 如果

  • 0.15 新版功能. 该节文档讲述Scrapy核心API,目标用户是开发Scrapy扩展(extensions)和中间件(middlewares)的开发人员。 Crawler API Scrapy API的主要入口是 Crawler 的实例对象, 通过类方法 from_crawler 将它传递给扩展(extensions)。 该对象提供对所有Scrapy核心组件的访问, 也是扩展访问Scrapy核

  • 问题内容: 欢迎, Hibernate映射存在一些问题。 数据库结构: POJO结构: 我想拥有的是TableC Pojo映射中TableB元素的集合,映射键是tableA。 该集合应该是只读的。 映射应为hbm而非注释。 我可能已经以各种可能的方式完成了此操作…我遇到的关闭情况是,当我对一个TableC对象进行操作时,一切都是正确的,但是如果我加载它们的集合,则只有最后一个具有正确的集合集。 更