我正在构建一个基于开源项目的应用程序。这个项目定义了自己的模型和jpa映射,我想重用这个模型。我正在使用Hibernate,就像在最初的开源项目中一样。
不过,我的项目中有一些特性,所以我有一些自定义类来扩展具有自定义字段的开源项目类。
例如:
开源项目:
@Entity
public class AType {
@ManyToOne(fetch = FetchType.LAZY , cascade = { CascadeType.PERSIST})
@JoinColumn(name = "btype_id")
private BType bTypeField;
@Column(name=basicField)
private String basicField;
}在我的项目中
@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)。
@ManyToOne(fetch = FetchType.LAZY , cascade = { CascadeType.PERSIST})
@JoinColumn(name = "btype_id", insertable=false, updatable=false)
private CustomBType customBTypeField;
}当我以maven dep的身份获得开源项目时,我无法触摸映射定义(或者我可以吗?)所以我把我的自定义映射定义为只读,并且我不能再插入自定义对象了。
所以我的问题是:
发布于 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
https://stackoverflow.com/questions/34332966
复制相似问题