我有两个表,它们的关系如下图所示
我创建了Hibernate数据模型,如下所示
@Entity
@Table(name = "SUBJECT")
public class Subject {
@Column(name = "NAME")
private String name;
@Column(name = "ADDRESS")
private String address;
@Column(name = "CLIENT_ID")
private String clientId;
@OneToMany(mappedBy = "subject", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<SSI> SSIs;
// getters and setters
...
}
@Entity
@Table(name = "SUBJECT_IDENTIFIER")
public class SubjectIdentifier {
@Column(name = "VALUE")
private String value;
@Column(name = "AUTHORITY")
private String authority;
@Column(name = "TYPE")
private String type;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "SUBJECT_ID", referencedColumnName = "ID", insertable = true,
updatable = true,
@JoinColumn(name = "CLIENT_ID", referencedColumnName = "CLIENT_ID", insertable =
true, updatable = true)
})
private Subject subject;
// getters and setters
...
}
@Entity
@Table(name = "SSI")
public class SSI {
@ManyToOne
@JoinColumns({
@JoinColumn(name = "SUBJECT_ID", referencedColumnName = "ID", insertable = true,
updatable = true),
@JoinColumn(name = "CLIENT_ID", referencedColumnName = "CLIENT_ID", insertable =
true, updatable = true)
})
private Subject subject;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumns({
@JoinColumn(name = "SUBJECT_IDENTIFIER_ID", referencedColumnName = "ID", insertable = true,
updatable = true),
@JoinColumn(name = "CLIENT_ID", referencedColumnName = "CLIENT_ID", insertable =
true, updatable = true)
})
private SubjectIdentifier subjectIdentifier;
// getters and setters
...
}
我打算创建如下实体
...
Subject s = new Subject();
//.. initialization of s goes here
SubjectIdentifier si = new SubjectIdentifier();
//.. initialization of si goes here
SSI ssi = new SSI();
ssi.setSubject(s);
ssi.setSubjectIdentifier(si);
s.setSSI(ssi);
...
emProvider.get().persist(s);
当我运行这个时,我得到以下错误
org.hibernate.MappingException:实体映射中的重复列:*。SSI 列:CLIENT_ID(应使用 insert=“false” update=“false”进行映射)
如果我设置插入="false"更新="false"
为CLIENT_ID,它将再次错误关于插入的混合
如果我为所有@JoinColumns设置insert=“false”update=“false”
,那么它不会保留对象。
如何真正处理这种实体创建?
您可以访问下面的链接:
org.hibernate.MappingException:实体映射中的列重复
问题内容: 我有两个实体: 我正在尝试通过执行以下操作插入文件(以及随后的标签): 然后,我使用以下命令将文件插入DAO: 在我的日志中,我在“文件”表中看到一个插入,在标签表中看到2个插入,但是,指向我的文件表(file_id)的标签表中的外键为NULL。 我可能做错了什么? 问题答案: 您不是将标签的文件设置为文件,而是将标签的文件设置为文件。请记住,在OOP中,与关系模型相反,您必须设置关系
这是我的插入代码,后面是创建表的代码 我不想插入任何东西到列占用,我不知道为什么这是发生的或如何修复它。我只想在tblGrave(GraveName)中插入值。任何帮助都会很好。
问题内容: 我正在研究与H2数据库接口的Java插件。我真正想要的是“插入忽略”语句;但是,我知道H2不支持此功能。我也知道Merge,但这并不是我想要的,如果记录存在,我不想更改它。 我正在考虑的是只是运行插入并让重复键异常发生。但是,我不希望这填满我的日志文件。DB调用发生在我无法更改的导入类中。所以我的问题是: 这是合理的做法吗?我不是让错误发生的人,但这似乎是这种情况下的最佳方法(它应该不
我有以下代码: 其中,是一个标识列,其中不允许有空值。在我的Excel文件中,该列是空的(除了标题) 我得到以下错误消息: 无法将值NULL插入列AmountId中,表AnalyticsV2P7. CapModel. LedgerAmountByECMAcCountByRptLOB;列不允许空值。INSERT失败。 我知道不允许有空值,因为我是这样设置的,但它不应该填充标识列,这样就没有空值了吗?
使用flyway-core:4.1.2进行数据库迁移。 添加了一个新的DDL文件供flyway执行。Flyway会正确执行DDL并对表和列进行相应的更改。(我们在新的DDL中添加了一个表并更改了以前的一些列)。 但是,flyway无法将此尝试注册到schema_version表:我得到以下错误: 架构[dbo]的当前版本:2.1 无法在元数据表[dbo]中插入版本“3.0”的行。[schema_v
本文向大家介绍插入Delete GetRandom O(1)-C ++中允许重复,包括了插入Delete GetRandom O(1)-C ++中允许重复的使用技巧和注意事项,需要的朋友参考一下 假设我们要创建一个支持某些操作的数据结构,这些操作必须在O(1)的时间内执行。所以让这些操作像- insert(x):将x插入集合 remove(x):从集合中删除x getRandom():这将找到该集