最近我在项目中加入多对一双向关联的做法 因为以前没涉及过hibernate级联删除问题 我建立了几个多对一关联的双向关联,下面是我的代码:
Customer.hbm.xml
...省略其它Customer属性
<set name="msges" inverse="true" cascade="all">
<key column="RecCustomer_id"/>
<one-to-many class="EricMsg"/>
</set>
<set name="msgess" inverse="true" cascade="all">
<key column="SendCustomer_id"/>
<one-to-many class="EricMsg"/>
</set>
<set name="ericpingluns" lazy="true" inverse="true" cascade="all">
<key column="EricPingLun_id"/>
<one-to-many class="EricPingLun"/>
</set>
下面还有几个同样的set属性...
Customer.java
...
private Set ericNewses=new HashSet(); //关系 1:n
private Set ericpingluns=new HashSet();//关系 1:n
EricMsg.java
...
private Customer sendcustomer;
private Customer reccustomer;
EricMsg.hbm.xml
<many-to-one
name="sendcustomer"
column="SendCustomer_id"
class="Customer"/>
<many-to-one name="reccustomer"
column="RecCustomer_id"
class="Customer"/>
现在Customer登录后,察看到自己的消息,察看完毕后,想删除掉Ericmsg.可是总是删除的时候出现
deleted object would be re-saved by cascade
有的时候也会出现说
session would be used or session would be closed
我的 删除 Action中只是把ID传过去 然后利用接口的
public void deleteEricMsg(EricMsg ericmsg) throws ServicesException {
this.delete(ericmsg);
}
我觉得主要的把我获取留言的类贴出来,我自己觉得是这里出了问题
CheckCustomerMsgAction
private Customer customer;
private Set ericmsges=new HashSet();
public String execute()throws Exception{
customer=super.getCustomer();
if(this.customer!=null){
if(customer.getMsges().size()>0){
ericmsges=customer.getMsges();
return SUCCESS;
}
return INPUT;
}
return INPUT;
}
我改了很多 可是依旧无法解决这个问题,我想达到的是能删除Msg 用户再次Check后不能再看到那条消息,我现在却依旧可以看到msg这个临时对象
分享到:
相关推荐
- 面向对象的域模型与关系型数据库的不匹配,如继承、多对多关联、双向关联等。ORM框架如Hibernate通过映射转换解决这些问题。 6. **Session的find()方法与Query接口**: - **find()**:简单的HQL查询,不支持...
- ORM(Object-Relational Mapping)解决了面向对象模型和关系数据库之间的转换问题,如继承、多对多关联、双向关联等。 6. **继承关系的映射**: - 单表继承:每个具体类对应一个表,包含所有属性。 - 多表继承...
- ORM(Object-Relational Mapping)处理对象模型和关系模型之间的差异,如继承、多对多、双向关联等。 6. **继承关系映射**: - **单表继承**:每个子类对应一个表,包含自身及父类属性。 - **根类表继承**:...
- 继承关系、多对多关联、双向关联等概念在两种模型间转换时会遇到困难。 - 精粒度模型与粗粒度模型的不同需求也导致了不匹配。 ### 映射继承关系的三种方式 1. **每个具体类对应一张表**:表中包括父类和子类的...
它是比较弱的一种关联形式,通常涉及到短暂的交互或者临时性的使用。UML中,依赖用带箭头的虚线表示。这种关系强调了类之间的动态联系,有助于识别和减少耦合。 4. **关联(Association)**: 关联是类与类之间的...
- **转换单向关联为双向(Change Unidirectional Association to Bidirectional)**:在两个对象之间建立一个完整的双向关联。 - **封装集合(Encapsulate Collection)**:将一个公开的集合变为私有,并提供相应...
- **迫切左外连接检索**:适用于需要立即获取关联数据的情况,特别是在一对一或多对一关联中。 **5. ORM解决的不匹配问题** - **数据模型差异**:对象模型通常具有继承、多态等特性,而关系模型则通过表格表示数据...
- **应用场景**:当多个对象依赖于同一份数据时,为了避免并发修改问题,可以考虑为每个对象提供一份数据副本。 - **操作步骤**:分析数据共享的必要性;对于那些需要频繁访问且可能被多个对象修改的数据,可以为每...
- 描述:隐藏一个对象对另一个对象的委托。 - 场景:提高系统的内聚性和降低耦合度。 23. **Hide Method(隐藏方法)** - 描述:在子类中隐藏父类的方法。 - 场景:避免方法名冲突。 24. **Inline Class...
- **改变单向关联为双向** (`ChangeUnidirectionalAssociationtoBidirectional`):通过双向关联增加对象间的信息传递。 - **改变实值对象为引用对象** (`ChangeValuetoReference`):将简单的数据类型转换为对象...
**UML(统一建模语言)**是一种标准的图形建模语言,用于软件工程领域,特别是在面向对象设计中。它提供了多种图表来帮助系统分析师、设计师和开发人员可视化、理解和交流系统的不同方面。UML包括九种关系和九种图表...
- **Change Bidirectional Association to Unidirectional (将双向关联改为单向):**简化对象之间的关系。 - **Change Reference to Value (将引用对象改为实值对象):**改变对象存储方式,提高性能。 - **Change ...
- **双向关联**:两个类互相了解对方的存在,并且可以相互访问。例如,订单属于某个客户,同时客户也可以访问到与之相关的订单信息。 ### 四、示例练习 #### 练习1: 实现Student和Teacher类 ```csharp public ...
- **EntityBean**:表示持久化的业务对象,与数据库关联,实现数据存储和检索。 以上知识点是Java面试中常见的问题,理解和掌握这些概念对于成为一名合格的Java开发者至关重要。在面试中,能够熟练地讨论和应用...
- **示例**:在示例中,一个割接通知可以关联多个故障单,这种关系可以通过多重性表示,例如`0..*`。 ### 实例分析 根据给定的示例,我们可以进一步了解各种关系的实际应用场景: 1. **通知分类**:通知分为一般...
- **LinkedList** 使用双向链表,插入和删除速度快,但按索引访问慢,因为需要遍历链表。 8. **EJB(Enterprise JavaBeans)**: - EJB是Java EE的一部分,用于构建分布式企业级应用。 - **SessionBean** 代表...
19. ListIterator:这是Java中Iterator的一个子类,支持双向遍历。 20. SQL查询类型:SQL查询可以创建各种类型,包括选择、追加、更新和删除等。 21. JDBC异常:SQLException是JDBC编程中常见的异常类型,通常与...
因为`private`方法在子类中是不可见的,而`static`方法与类相关联,与特定的对象无关。 5. **方法覆盖(Overriding)与方法重载(Overloading)** - **方法覆盖(Overriding)**: 在子类中重新定义父类的方法,要求方法...