首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPA :覆盖子类中的映射

JPA :覆盖子类中的映射
EN

Stack Overflow用户
提问于 2015-12-17 11:02:57
回答 1查看 262关注 0票数 0

我正在构建一个基于开源项目的应用程序。这个项目定义了自己的模型和jpa映射,我想重用这个模型。我正在使用Hibernate,就像在最初的开源项目中一样。

不过,我的项目中有一些特性,所以我有一些自定义类来扩展具有自定义字段的开源项目类。

例如:

开源项目:

代码语言:javascript
运行
复制
@Entity
public class AType {

    @ManyToOne(fetch = FetchType.LAZY , cascade = { CascadeType.PERSIST})
    @JoinColumn(name = "btype_id")
    private BType bTypeField;


    @Column(name=basicField)
    private String basicField;

}

在我的项目中

代码语言:javascript
运行
复制
@Entity
public class CustomAType extends AType {

@ManyToOne(fetch = FetchType.LAZY , cascade = { CascadeType.PERSIST})
@JoinColumn(name = "btype_id")
    private CustomBType customBTypeField;

}

在CustomBType类中,除了BType属性之外,还有特定的属性。

为了获得CustomBType在CustomAType中的一个实例,我需要重新声明映射,所以JPA让我将这两个映射中的一个标记为只读(updatable=false,insertable=false)。

代码语言:javascript
运行
复制
@ManyToOne(fetch = FetchType.LAZY , cascade = { CascadeType.PERSIST})
@JoinColumn(name = "btype_id", insertable=false, updatable=false)
    private CustomBType customBTypeField;

}

当我以maven dep的身份获得开源项目时,我无法触摸映射定义(或者我可以吗?)所以我把我的自定义映射定义为只读,并且我不能再插入自定义对象了。

所以我的问题是:

  • 有没有办法使原始映射成为只读的,而不是我的?
  • 是否有更好的方法重用JPA模型?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-17 11:31:51

当我以maven dep的身份获得开源项目时,我无法触摸映射定义(或者我可以吗?)

JPA允许通过XML配置文件覆盖或禁用类中的JPA注释。

在回答您的问题时,您可以在不触及源的情况下更改映射:

https://docs.jboss.org/hibernate/stable/annotations/reference/en/html/xml-overriding.html#d0e3768

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34332966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档