- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个实体,其中有两个相同类型的Embedded
类,其中一个实体有一个相同类型的ElementCollection
两个类。业务逻辑显然是正确的,但我猜我遇到了一些缺乏 JPA 知识的问题。
让我们检查一下我的类(class):
@Entity
public class Etapa extends EntidadeBase {
@Embedded
private CronogramaDeDesembolso cronogramaDeReceita;
@Embedded
private CronogramaDeDesembolso cronogramaDeDespesa;
}
@Embeddable
public class CronogramaDeDesembolso {
@ElementCollection
private List<Parcela> parcelas;
}
我收到以下错误日志。
Caused by: org.hibernate.HibernateException: Found shared references to a collection: nexxus.convenioestadual.dominio.planodetrabalho.etapa.Etapa.cronogramaDeReceita.parcelas
你们知道哪里出了问题以及如何修复它吗?
编辑:
由于评论我做了这个编辑,但它也不起作用
@Entity
public class Etapa extends EntidadeBase {
@Embedded
@AttributeOverride(name = "parcelas", column = @Column(name = "parcelasReceita"))
private CronogramaDeDesembolso cronogramaDeReceita;
@Embedded
@AttributeOverride(name = "parcelas", column = @Column(name = "parcelasDespesa"))
private CronogramaDeDesembolso cronogramaDeDespesa;
}
最佳答案
您决定使用此结构有什么原因吗?通常,将对象转换为 RDBMS 时,您需要对关系进行建模。当您使用嵌入时,它会将与其关联的列添加到表中。因此,当您正常执行此操作(而不是集合)时,就可以了。
当你进行 Collection 时,它会遇到问题。主要是没有办法在一行中表示一个集合(因为这是一个实体,您可以拥有许多实体,因此对于每个对象来说,您只有一行)和一列。因此,当您表示一个集合时,您实际上必须有第二个表,其中有一列将其引用回第一个表。这确实与正常物体的思维相反。集合条目需要知道它们与哪个集合关联,而不是集合了解其条目。
所以在一些 POJO 中你可以有这些......
MyListObject {
//Some implementation of things you want to collect
}
MyClass {
List<MyListObject> myListObject;
}
但是要在 JPA 中对此进行建模,您需要用两个表来表示它们。
您的对象将出现在列表中。
@Entity
MyListObject {
@ManyToOne
@JoinColumn(name = "MY_CLASS_KEY")
private MyClass myClass;
}
将拥有该列表的对象/实体。
@Entity
MyClass {
@Id
@Column(name = "MY_CLASS_KEY")
private Long myClassKey;
@OneToMany(mappedBy = "myClass")
private List<MyListObject> myString;
}
我希望这有帮助。
关于java - jpa - 两个不同的 @Embeddable 类中的多个 @ElementCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39021411/
我想知道是否可以在另一个 Embeddable 中包含一个 Embeddable 的 ElementCollection ? 这是我的供应商实体的示例,其中包含可嵌入类型的地址列表: @Entity
我们正在将旧的基于 xml 的配置转换为基于注解的配置 情况 有一个类注释为 @Embeddable(ParentPk.java) ,另一个类扩展了这个类,它是 @Embeddable(ChildPk
JPA ElementCollection Embeddable 可以具有 ElementCollection List Embeddable 属性吗? @Entity class Perso
我有实体 Ride 和 @ElementCollection(targetClass = RideLocation.class): @ElementCollection(targetClass = R
在搜索了 JPA 文档和各种帖子后,我对 JPA2.0 是否可以实现以下功能感到困惑。我刚开始使用 JPA,所以如果我做了一些愚蠢的事情,请原谅, 我的领域模型有一个“投资组合”,其中包含零个或多个“
我正在使用 @ElementCollection 作为自定义对象列表 @ElementCollection @CollectionTable(name = "choice", joinColumns
我正在使用 v3 youtube API 根据其 ID 获取视频数据。 这是我当前的搜索: https://www.googleapis.com/youtube/v3/videos?part=snip
两个表如: CREATE TABLE foo ( id INT PRIMARY KEY, x TEXT ); CREATE TABLE bar ( foo_id INT REFERENCE
想象一下下面的类 @Embeddable class A { @ManyToOne public B classB; ... public State someEnum
我收到了一个 Eclipse 错误:@EmbeddedId . 这是实体: @Entity @Table(name = "PERSON") public class Person implements
我按照 sitepoint moviestore tutorial进行操作,除了用户购买电影后未将视频加载到iframe中之外,其他一切工作正常。我在一栏中有一个带有youtube url的csv文件
我有一个简单的关系,其中一个实体有许多特定于它的地址,定义为: @Entity public class Corporation { @Id private Long id;
嵌入式和实体之间是否可能存在双向关系或仅存在单向关系? @Entity public class Employee { @Id private long id; ... @Embedd
我看到许多使用 @Embeddable 建立一对多关系的示例,如下所示: @Entity @Table(name = "profiles") public class Profile { @I
如何获取 Maven 插件内的 Maven 项目的所有配置文件列表? 会是: MavenEmbedder.readModel(new File("path to pom.xml")).getProfi
我尝试在可嵌入中使用 elementCollection,但 JPA2.0 似乎忽略它。 如果我进行调试,我会看到可嵌入的集合已被填充,但它不会被持久化,并且 JPA 不会抛出任何异常。它似乎只是由于
我想创建一个类 Exporter,它有两个电话号码:座机和手机。知道电话号码由国家代码和号码组成,我创建了一个 Embeddable 类: @Embeddable public class Embed
我有一个场景,hibernate 中的 Embeddable 类使用Entity。根据我在SO和其他链接上找到的各种答案,我们可以在Embeddable类中编写@ManyToOne,@OneToMan
我有一个用户类,它有一个类配置文件@Embedded。如何为 Profile 的实例提供对其所有者 User 类的引用? @Entity class User implements Serializa
我有一个 JPA 实体的类层次结构,它们都继承自 BaseEntity 类: @MappedSuperclass @EntityListeners( { ValidatorListener.class
我是一名优秀的程序员,十分优秀!