- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 2 个主键的表(所以它们的组合应该是唯一的)。架构是这样的:
TABLE="INVOICE_LOGS"
INVOICE_NUMBER PK non-null
INVOICE_TYPE PK non-null
AMOUNT
当我尝试一次保留多条记录时,出现此 hibernate 异常:
Caused by: javax.persistence.PersistenceException: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [...InvoiceLog#110105269]
所以如果我在下面使用下面的代码,我会得到上面的 hibernate 异常。如果我只保存一条记录,它工作正常,但如果我尝试像我正在尝试做的那样保存一个集合,它就会失败。
List<InvoiceLog> logs = getLogs();
for(OvercounterLogDO log: logs) {
persist(log);
}
public void persist(final Object entity) {
entityManager.persist(entity);
entityManager.flush();
}
hibernate 映射类如下:
@Component(InvoiceLog.BEAN_NAME)
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
@Entity
@Table(name = "INVOICE_LOGS", uniqueConstraints = {@UniqueConstraint(columnNames = "INVOICE_NUMBER"),@UniqueConstraint(columnNames = "INVOICE_TYPE")} )
public class InvoiceLog implements java.io.Serializable {
private static final long serialVersionUID = -7576525197897271909L;
protected static final String BEAN_NAME = "invoiceLog";
private long invoiceNumber;
private String invoiceType;
private Double amount;
public InvoiceLog(){}
public InvoiceLog(Integer invoiceNumber, String invoiceType,
Double amount) {
super();
this.invoiceNumber = invoiceNumber;
this.invoiceType = invoiceType;
this.amount = amount;
}
@Id
@Column(name = "INVOICE_NUMBER", unique = true, nullable = false, precision = 10, scale = 0)
public long getInvoiceNumber() {
return invoiceNumber;
}
public void setInvoiceNumber(long invoiceNumber) {
this.invoiceNumber = invoiceNumber;
}
// @Id
@Column(name = "INVOICE_TYPE", nullable = false, length = 4)
public String getInvoiceType() {
return invoiceType;
}
public void setInvoiceType(String invoiceType) {
this.invoiceType = invoiceType;
}
@Column(name = "AMOUNT", nullable = false, length = 12)
public Double getAmount() {
return amount;
}
public void setAmount(Double amount) {
this.amount = amount;
}
}
最佳答案
您当前的映射只有一个 ID、invoiceNumber,而不是复合键。因此,它会要求 invoiceNumber 是唯一的,而不是您想要的组合。这就是异常告诉您的内容,它注意到您正在尝试保存具有相同 Id 值的第二条记录。
您需要将这两个字段映射为一个组合键。从您对第二个 @Id
的注释看来,您在某个时候正朝那个方向前进。 Here's the documentation关于映射复合键的方法。
关于java - 多个主键表 - Hibernate NonUniqueObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6204673/
大家好,我在尝试将对象数组写入数据库时遇到了 Hibernate 问题。重要的是我有一个从 Web 服务查询构建的对象。这个对象“响应”最多可以包含十个“未付费项目”,当我尝试保留这些项目时,就会
当我使用 JPA 持久保存对象时,出现 NonUniqueObjectException。 我持久化的对象有其他对象,并且在某些情况下这些对象具有相同的 id。 可以对已保存在数据库中的对象进行合并,
我在 Java Hibernate 中使用 SINGLE_TABLE 继承策略,这里是设置: Class A @Cascade(CascadeType.DELETE_ORPHAN, CascadeT
我们使用 DTO 模式将我们的域对象从服务层编码到我们的存储库,然后通过 NHibernate 向下编码到数据库。 我遇到了一个问题,我从存储库中提取了一个 DTO(例如 CustomerDTO),然
我正在编写一个博客引擎作为学习练习。我知道那里有很多博客引擎,但请耐心等待... 我有一个 BlogPost 实体,它有一个属性标签,它是一个与之关联的标签的 IList。 BlogPost.SetT
我有这个简单的情况: @Entity public class Customer{ @ManyToMany(fetch=FetchType.EAGER) @Cascade(Cascad
我有一个包含子实体集合的父实体,几乎每次我访问该父实体时都需要从 web 服务更新这些子实体。我想我可以只对集合执行 Clear(),然后添加我从 Web 服务收到的实体列表。当我收到的实体没有与我刚
我收到这个错误: a different object with the same identifier value was already associated with the session:
我有一个非常简单的方法: public D saveDocument(D document) { final Session currentSession = getCurrentSessio
当我想从数据库中删除对象时出现错误。错误是: org.hibernate.NonUniqueObjectException: a different object with the same iden
我有一个包含 2 个主键的表(所以它们的组合应该是唯一的)。架构是这样的: TABLE="INVOICE_LOGS" INVOICE_NUMBER PK non-null INVOICE_TYPE
我在将多个对象保存到数据库时遇到问题。我得到 org.hibernate.NonUniqueObjectException: 具有相同标识符值的不同对象已与 session 关联我的代码:配置cfg
我有一个实体,其中包含另外两个具有@ManyToOne 关系的实体。 @Entity public class A extends Serializable{ @Id @Generat
当我尝试将给定图像两次添加到同一个目标城市时,出现以下异常: NonUniqueObjectException: a different object with the same identifier
从 grails webapp 添加记录时,我收到 NonUniqueObjectException。发生这种情况是因为 webapp 的用户能够添加记录,并且他们填写的字段之一是域对象/db 表的
尝试从 session 中删除地址对象时,出现此异常org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与 session 关联。 以下是调用源码
我使用 MySQL、Hibernate、JPA 和 Spring,我的问题是我无法一对一关联更新子表;我正在使用外国策略。 当我使用 saveOrUpdate 并调用第一次方法时,我可以将实体保存到数
我有 3 个不同的实体类,即 Pashmina、Description、Image、PashminaColour。这里,Pashmina 与描述、图像和 PashminaColour 具有一对多关系。
在我的模型中有3个实体(实际上超过3个,但实际上是3个实体处于这种情况) Candidate Vacancy Event 它们都具有多对多的关系(候选人可以有可能的空缺和许多 Activity ,空缺
在我的模型中有3个实体(实际上超过3个,但实际上是3个实体处于这种情况) 候选人 职位空缺 Activity 它们都具有多对多的关系(候选人可以有可能的空缺和许多 Activity ,空缺......
我是一名优秀的程序员,十分优秀!