我在两个实体之间有一个@ManyToMany关系。当我在拥有端执行更新时,JPA似乎从我的数据库中删除了所有链接的记录,并重新插入它们。对我来说,这是一个问题,因为我有一个在删除记录之前触发的MySQL触发器。对如何解决这个问题有什么想法吗?
@Entity
public class User {
@Id
@Column(name="username")
private String username;
...
@ManyToMany
@JoinTable(name="groups", joinColumns
我有一个折叠实体:
@Entity
public class A {
// id, etc..
@OneToOne
private B b;
}
表a已经存在,当我向其添加新字段b时,hibernate执行以下操作:
alter table a add column b_id int8
alter table a add constraint FKg76mxqt8whi8t8p4i7el95910 foreign key (b_id) references b
如您所见,外键列b_id并不是唯一的。为什么是这种情况?一对一的关系不是意味着外键必须是唯一的吗?这也是我在JPA的单
我有一个相当典型的场景,其中有一个主@实体,并且他内部的所有东西都是可嵌入的(所以没有父实体,里面的所有东西都没有意义)。现在,JPA2.0阻止我在另一个@ElementCollection中定义的@Embeddable中嵌套一个@ElementCollection:
包含在元素集合中的可嵌入类(包括另一个可嵌入类中的可嵌入类)集合,也不能包含与多对一或一对一关系以外的实体的关系。
现在的问题是:这是为什么?一个简单的例子:
@Entity
public class Tournament {
@Id
Long id;
@ElementCollection
我正在使用eclipse 2,并且有三个实体:父实体、子实体和ChildInfo。父母对孩子只有一个。孩子有1比1到ChildInfo。
i想要在一个调用中得到一个具有所有子对象的父对象:"select P from Parent left join P.children P.id=:id P.id=:id“,这只会在P至少有一个子(我以为是一个左外部连接)时才会给出结果,因为jpa不支持导航p.children.childinfo,所以我也想拥有所有的孩子&所有的孩子&所有的孩子和所有的孩子,因为jpa不支持导航p.children.childinfo,有什么方法可以
实际上,我正在尝试使用JPA @OneToOne注释来将Child实体链接到它的Parent。
它工作得很好,除了在获取Child的列表时,JPA引擎(在本例中是Hibernate)进行1+n查询。
下面是Hibernate查询的日志:
select child0_.id as id1_0_, child0_.parent as parent3_0_, child0_.value as value2_0_ from child child0_
select parent0_.id as id1_1_0_, parent0_.something as somethin2_1_0_ from pa
我使用JPA2.0和OpenJPA作为底层实现。我有一个实体,它映射到自己来表示实体之间的父子层次结构。一个实体可以有多个子项,但最多只能有一个父项。因此,没有父级的实体位于层次结构的顶部。我的目标是从data table.So中获取我查询的所有层次结构:
SELECT e FROM MyEntity e where e.parent is null
在MyEntity中,我已经完成了如下映射:
@ManyToOne
@JoinColumn(name="PARENT")
private MyEntity parent;
@OneToMany(mappedBy="par
有没有人知道是否可以在JPA @EmbeddedId中建立反向引用。
例如,有一个实体,其形式为
@Entity
public class Entity1 {
@Id
@GeneratedValue
private String identifier;
private Entity1 relationToEntity1;
//Left out the getters and setters for simplicity
}
以及具有复杂嵌入Id的第二实体。第二个实体的一部分是对其父实体的引用。如下所示:
@Entity
public cla
给java hibernate/jpa用户一个快速的问题。
我有两个带有关系的表(实体)A和B,因为A有许多B(一对多)。实体A在java中有一组值B。
由于读取性能问题,我想实现主细节反规范化,所以我想将原始Set对象(可能序列化)直接存储在实体A中(因为jpa读取的多对一关系花费了我大量的cpu时间(更新不是问题))。
问题是,我是否可以实现这样的目标:getB总是返回非规范化对象(所以它的速度很快),addB添加新的B来设置和更新非规范化对象,并使用新的原始数据为更快的读取做准备?
它的oracle数据库。
实体示例:
class A {
Long id,
String
问题:
我需要将更新后的分离EF对象保存到数据库中。
取消填充的实体是通过绑定基本实体来创建的,然后
foreach child ...
entity.children.add(child)
我添加了一个子实体数组,这也是我在控制器中绑定得到的。
我想要的是,旧实体被新实体完全替换,这意味着:
entity.property => update (easy)
entity.child => delete old child if not exists in the new,
update if already exists (easy)
我有那些实体,它不是来自真正的代码,但我认为这并不重要。
@Entity
public class Country{
private String name;
//other fields with getters and setters
@OneToMany
private List<City> cites;
}
@Entity
public class City {
private String name;
//other fields wit