【发布时间】:2013-01-02 04:45:34
【问题描述】:
我有一个控制数据 DB-TABLE 实体
@Table(name = "A")
class A {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "A_OID")
private Long pk;
}
和一个引用上述 DB-TABLE 和其他一些的 DB-VIEW 实体
@Table(name = "A_VIEW")
class ARef {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "A_OID")
private Long pk;
private String value;
}
其中一些value 加入其中。pk 指的是同一行。如何保存我的实体B,引用ARef,使用A,类似这样:
class B {
public ARef a;
}
A a = em.find(A.class, pk);
B b = new B();
b.a = a; // How to do this? Using pk somehow?
还有更多,所以不能简单地改用ARef a = em.find(ARef.class, pk);。
我知道 OpenJPA 中有某种类型的“原生 SQL”支持,但那太低级了。
【问题讨论】:
-
JPA 不定义/允许直接更新来自其他类的实体字段(仅通过设置器)。显然,一些 JPA 提供者可能支持它(例如 DataNucleus JPA 支持),但很多不支持。
标签: java database jpa jpql openjpa