如下代码:
@Entity
@Table(name = "BizWorkflowEntry")
public class BizWorkflowEntry extends AbstractEntity {
private BizWorkflowBinding entryBinding;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "CurrentBindingId")
public BizWorkflowBinding getEntryBinding() {
return entryBinding;
}
public void releaseBinding() {
entryBinding = null;
}
。。。
}
BizWorkflowEntry 是聚合根,entryBinding是其中的对象。
我通过repository获取到BizWorkflowEntry 对象后,同时加载entryBinding对象。然后执行releaseBinding操作,这个时候,BizWorkflowEntry 这个对象在内存中的状态已经进行了更新。然后调用更新BizWorkflowEntry 的方法,我希望是能够实现表BizWorkflowEntry中的字段CurrentBindingId为null,同时entryBinding对应的记录被删除掉。类似于如下代码:
BizWorkflowEntry entry = xxxRepo.get(BizWorkflowEntry.class, entryId);
entry.releaseBinding();
xxxRepo.update(entry );
但是现在的问题是,只能更新BizWorkflowEntry 表,而无法删除对应的BizWorkflowBinding 对象,我不像做如下的操作,因为这明显是很不符合基于聚合根来进行操作的规定。
BizWorkflowEntry entry = xxxRepo.get(BizWorkflowEntry.class, entryId);
BizWorkflowBinding binding = entry.getEntryBinding();
entry.releaseBinding();
xxxRepo.update(entry );
xxxRepo.delete(binding );
不知道各位在进行DDD设计和开发时,有没有遇到类似的问题,是如何解决的?谢谢!
相关推荐
《实现领域驱动设计》这本书是领域驱动设计(Domain-Driven Design,简称DDD)领域的经典之作,作者埃里克·埃文斯深入探讨了如何通过软件设计来理解和处理复杂的业务问题。书中提供的源码工程是理解DDD实践的重要...
在计算机领域,操作系统和硬件之间有一个重要的桥梁,那就是驱动程序。驱动程序是操作系统与硬件设备进行通信的特殊软件,使得操作系统能理解并控制硬件设备的工作。本文将详细讲解如何在PE(预安装环境,Pre-...
微软的2007 Office System驱动程序:数据连接组件(AccessDatabaseEngine.exe)正是为了实现这一目标而设计的工具。这款组件,作为Microsoft Office的一部分,允许用户与其他数据源进行无缝的数据交换,特别是对于...
R-STUDIO Network是一款备受推崇的专业级数据恢复软件,尤其在驱动级恢复领域,它展现出了强大的功能。本文将深入探讨R-STUDIO Network的数据恢复原理、特性以及实际应用。 R-STUDIO Network是一款由R-Tools ...
3. 配置:安装完成后,可能需要在设备管理器中手动更新USB转串口设备的驱动,选择刚刚安装的驱动程序文件夹。 4. 验证:连接USB数据线到PLC,观察设备管理器中是否出现新的串口设备,然后在编程软件中尝试连接,确认...
此外,工业级USB驱动转232还涉及到抗干扰设计、宽温范围工作能力、以及防尘防水等特性,以适应恶劣的工作环境。 在实际操作中,可能遇到的问题包括驱动不兼容、设备无法识别、通信中断等。解决这些问题通常需要检查...
c# datagridview 操作 ACCESS 编辑 更新 插入 删除 ,在datagridview里进行编辑后,直接点击“保存”编辑即可同步更新数据库文件,数据库是mdb文件。程序能直接运行而不需要任何配置。此程序还是个解决 电力 拓扑...
MCGS(Monitor & Control for General System)昆仑通态是一款广泛应用于工业自动化领域的组态软件,它为用户提供了便捷的可视化界面设计和实时监控功能。其中,MCGS串口数据收发驱动是其重要组成部分,特别适用于...
对于Linux系统,驱动通常包含在内核源代码中,但可能需要更新或启用特定的模块。例如,FTDI芯片的驱动是`ftdi_sio`模块,而Prolific的对应模块是`pl2303`。用户可以通过`modprobe`命令加载模块,或者在`/etc/modules...
在这个课程设计中,学生通常会接触到一系列Python库,如Pandas、NumPy、Matplotlib和Seaborn等,这些工具在数据科学领域广泛应用。 1. **Pandas**:Pandas是Python中用于数据操作和分析的核心库,提供了DataFrame和...
这一过程同样需要在WXML中设计交互界面,JS中处理事件和数据更新逻辑。 6. **删除数据** 删除数据时,首先需要用户确认操作,防止误删。在WXML中,可以为每条数据添加一个删除按钮,JS中监听按钮点击事件,调用云...
在中国1-5级河流GIS数据中,每条河流被表示为线对象,包含了河流的几何形状、长度、流向以及可能的附加属性,如河流等级、流域面积、平均流量等。这种数据结构使得用户能够进行空间查询、距离计算、缓冲区分析和网络...
在驱动级模拟键盘鼠标的过程中,首先需要了解键盘和鼠标的数据格式,这些格式定义了如何通过端口发送模拟的按键或鼠标动作。例如,对于键盘,可能需要模拟扫描码(scancodes)的发送;对于鼠标,可能涉及X和Y轴的...
在“东北大学数据结构课程设计”中,学生将深入理解并实践各种基本的数据结构,如数组、链表、栈、队列、树、图等,并学习如何针对特定问题选择合适的数据结构。 1. **数组**:数组是最基础的数据结构,它提供了...
USB转LTP打印机数据线驱动是连接计算机与打印机的重要组件,尤其在老式打印机与现代计算机之间建立通信时,这种转换通常必不可少。LTP(Line Printer Terminal)是一种早期的打印机接口标准,主要用于串行通信,而...
本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出(Stack Overflow)。CSV(Comma Separated Values)格式因其简单、通用性...
用qt 实现删除文本文件中一行,deleteonelineinfile(int nNumLine, QString & filename);输入文件名和删除的行号可以删除。行号是0到行数减一。
在IT领域,尤其是在前端开发中,"省市县三级联动"是一种常见的功能,它涉及到用户界面中的下拉选择框,用于选择国家、省份、城市及区县等地理信息。这种功能通常应用于地址输入、物流配送、门店查找等场景,提供用户...
《Cadence系统级封装设计 Allegro Sip APD设计指南》是针对电子设计自动化(EDA)领域的专业文献,主要聚焦于使用Cadence公司的Allegro软件进行系统级封装(System-in-Package,SiP)的设计流程和技术。SiP技术允许...