问题描述
在纯JPA或JPA + Hibernate扩展中,是否可以声明组合键,其中组合键的元素是序列?
这是我的合成class:
@Embeddable
public class IntegrationEJBPk实现了Serializable {
// .. 。
@ManyToOne(cascade = {},fetch = FetchType.EAGER)
@JoinColumn(name =APPLICATION)
public ApplicationEJB getApplication(){
返回应用程序;
$ b @Column(name =ENTITY,unique = false,nullable = false,insertable = true,updatable = true)
public String getEntity ){
返回实体;
}
@GeneratedValue(strategy = GenerationType.AUTO,generator =INTEGRATION_ID_GEN)
@SequenceGenerator(name =INTEGRATION_ID_GEN,sequenceName =OMP_INTEGRATION_CANONICAL_SEQ)
@Column(name =CANONICAL_ID,unique = false,nullable = false,insertable = true,updatable = true)
public String getCanonicalId(){
return canonicalId;
@Column(name =NATIVE_ID,unique = false,nullable = false,insertable = true,updatable = true)
public String getNativeId(){
返回nativeId;
@Column(name =NATIVE_KEY,unique = false,nullable = false,insertable = true,updatable = true)
public String getNativeKey(){
返回nativeKey;
}
// ...
}
我已经为应用程序
,实体
, nativeId $ c $提供了值c>和
nativeKey
。我想构建一个如下所示的实体:
IntegrationEJB i1 = new IntegrationEJB();
i1.setIntegrationId(new IntegrationEJBPk());
i1.getIntegrationId()。setApplication(app1);
i1.getIntegrationId()。setEntity(Entity);
i1.getIntegrationId()。setNativeId(Nid);
i1.getIntegrationId()。setNativeKey(NK);
当我调用 em.persist(i1
),我希望生成 canonicalId
并且插入集成。
这可能吗?如果是这样,那么简单的方法是什么? (我更喜欢不使用应用程序提供的键或本机sql)。 我相信这对于普通的JPA来说是不可能的。
Is it possible in plain JPA or JPA+Hibernate extensions to declare a composite key, where an element of the composite key is a sequence?
This is my composite class:
@Embeddable
public class IntegrationEJBPk implements Serializable {
//...
@ManyToOne(cascade = {}, fetch = FetchType.EAGER)
@JoinColumn(name = "APPLICATION")
public ApplicationEJB getApplication() {
return application;
}
@Column(name = "ENTITY", unique = false, nullable = false, insertable = true, updatable = true)
public String getEntity() {
return entity;
}
@GeneratedValue(strategy = GenerationType.AUTO, generator = "INTEGRATION_ID_GEN")
@SequenceGenerator(name = "INTEGRATION_ID_GEN", sequenceName = "OMP_INTEGRATION_CANONICAL_SEQ")
@Column(name = "CANONICAL_ID", unique = false, nullable = false, insertable = true, updatable = true)
public String getCanonicalId() {
return canonicalId;
}
@Column(name = "NATIVE_ID", unique = false, nullable = false, insertable = true, updatable = true)
public String getNativeId() {
return nativeId;
}
@Column(name = "NATIVE_KEY", unique = false, nullable = false, insertable = true, updatable = true)
public String getNativeKey() {
return nativeKey;
}
//...
}
I already supply the values for application
, entity
, nativeId
and nativeKey
. I want to construct an entity like the one below:
IntegrationEJB i1 = new IntegrationEJB();
i1.setIntegrationId(new IntegrationEJBPk());
i1.getIntegrationId().setApplication(app1);
i1.getIntegrationId().setEntity("Entity");
i1.getIntegrationId().setNativeId("Nid");
i1.getIntegrationId().setNativeKey("NK");
And when I call em.persist(i1
), I want that the canonicalId
is generated and the integration is inserted.
Is this possible? If so, what's the simple way? (I prefer not to use application-provided keys or native sql).
I believe that this is not possible with plain JPA.
这篇关于JPA复合键+序列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!