我在上一个question中看到了响应! ,但并不能解决我的问题。
我跟踪了spring-data-jdbc的代码,发现只要自定义BeforeSaveEvent事件并在此事件中设置了自定义ID,在执行自定义事件后,它将继续触发执行RelationalAuditingEventListener#设置为ID的实体上的onApplicationEvent。做出isNew决定,即New = false。
// IsNewAwareAuditingHandler#markAudited
//触发markModified方法。
curve_fit(spot_yields_df, 30)
Out[52]: array(6.84325277)
集合根与实体之间有什么区别?使用第一次保存时,如何设计可以用entity.isNew(object) ? markCreated(object) : markModified(object);
和@CreatedDate
保存的实现? @CreatedBy
和@LastModifiedDate
?
答案 0 :(得分:0)
您所说的话对我来说似乎是个错误。 如果您在事件侦听器中设置ID,则仍应将其作为新实例进行处理。 请在https://jira.spring.io/browse/DATAJDBC
提交问题如何设计可以在使用第一次保存时使用@CreatedDate和@CreatedBy保存的实现? @LastModifiedDate和@LastModifyBy?
作为解决方法,您可以将IsNewAwareAuditingHandler
与事件处理程序结合使用以设置ID。
聚合根与实体之间有什么区别?
实体是通过其ID标识的对象,请注意,该ID可能是隐式的。 见下文。
聚集是一组对象(通常很小),它们属于同一对象,并在单个事务中持久存在。
例如,PurchaseOrder
和它的LineItem
都是属于同一聚合的两个实体。
单个对象很可能是它自己的聚合。
聚合根是聚合中的一个实体。
与聚合成员的所有交互都应通过聚合根。
这允许聚合根控制一致性。
例如,在上面给出的示例中,PurchaseOrder
将是聚合根。
因此,您将没有一个getItems()
吸气剂来返回项目的生命周期集合。相反,您可能会有addItem(productId, amount)
和getItems()
返回这些项目的副本,因此更改这些项目不会影响汇总。
马丁·福尔斯(Martin Fowlers)定义:https://www.martinfowler.com/bliki/DDD_Aggregate.html
沃恩·弗农(Vaughn Vernon)关于聚合的精彩文章:
https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_1.pdf
https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_2.pdf
https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_3.pdf