如附件图示:为账户(Account)和订单(Order)之间建立双向一对多关联关系。以前用Set在Account中来保存所有的Order。今天改成用List后,出现一个问题:得到Account实例后,调用getOrders()得到所有的订单,再访问订单实例的属性时报空指针问题(以前用Set时没有问题),请各位大大帮忙。
Account.hbm.xml
<class name="org.qiujy.domain.Account" table="account">
<id name="id" column="id" type="java.lang.Long">
<generator class="native"/></id>
<property name="userName" column="userName" type="string"/>
<list name="orders" table="orders" cascade="save-update" inverse="true">
<key column="accountId" not-null="true"/>
<list-index column="orderNumber" />
<one-to-many class="org.qiujy.domain.Order"/>
</list>
</class>
Order.hbm.xml
<class name="org.qiujy.domain.Order" table="orders">
<id name="id" column="id" type="long">
<generator class="native"/></id>
<property name="orderNumber" column="orderNumber" type="string"/>
<property name="createTime" column="createTime" type="timestamp"/>
<many-to-one name="account"
column="accountId"
class="org.qiujy.domain.Account"
not-null="true"/>
</class>
测试(数据库中已经有测试数据了)
Account account = (Account) session.load(Account.class, new Long(1));
System.out.println("============"+account.getUserName());
List list = account.getOrders();
int size = list == null ? 0 : list.size();
for(int i = 0; i < size; i++){
Order ord = (Order)list.get(i);
//报空指针异常
System.out.println( "No " + ord.getOrderNumber());
}
- 大小: 28.4 KB
分享到:
相关推荐
本主题将主要聚焦在一对一和一对多关联。 2. **关联的方向性:** 关联可以是单向或双向的。单向关联只能从一个实体访问另一个,而双向关联允许两个实体之间互相访问。 3. **@OneToOne, @OneToMany, @ManyToOne ...
**一对多关联** 在数据库设计中,一对多关系意味着一个表的记录可以与另一个表的多个记录相关联。在Hibernate中,这种关系可以通过`@OneToMany`注解实现。例如,User类可能会有如下注解: ```java @Entity public ...
在JPA中,一对多关联关系是常见的实体间关系类型,它表示一个实体可以与多个其他实体相关联。例如,一个学生可以有多个课程,一个部门可以有多名员工。在这个场景中,我们将深入探讨如何在JPA 2中实现一对多双向关联...
在MyBatis中,实现一对多关联有两种方式:集合映射和关联映射。集合映射通常用于一个实体包含一个列表或集合的子实体,而关联映射则允许更复杂的导航结构。在这个系列的第三部分,我们将重点讨论双向关联,这意味着...
在Java Persistence API (JPA) 中,一对多关联是一种常见的关系映射,它表示一个实体可以与多个其他实体相关联。这种关联在数据库层面通常通过外键实现,而在JPA中,我们通过注解来配置这种关系。这篇博客将深入探讨...
首先,我们要明白一对多关联意味着一个实体可以拥有多个关联的实体。在数据库中,这通常通过外键实现,即在一个表中有一个字段指向另一个表的主键。在Java中,我们可以使用`@OneToMany`和`@ManyToOne`注解来建立这种...
4. **注解细节**:`@JoinColumn`用于单向一对一或一对多关系,而在多对多关系中,通常使用`@JoinTable`来指定中间表的信息,包括表名、连接列等。 5. **操作关联**:在JPA中,可以通过添加或移除对象到集合属性来...
6. **源码分析**:为了更好地理解这一过程,你可以查看Hibernate源码,了解它如何处理多对多关联的SQL语句生成、中间表的操作以及事务管理。这有助于提高对Hibernate框架的理解。 通过以上步骤,我们可以在...
2. **一对多关联**:在数据库设计中,一对多关联表示一个表(父表)的记录可以与另一个表(子表)的多个记录相关联。在Hibernate中,这通常通过`@OneToMany`注解来实现。 3. **双向关联**:双向关联意味着两个实体...
本知识点将深入探讨Hibernate中的双向多对多关联映射,并通过XML配置文件进行设置。 在关系型数据库中,多对多(Many-to-Many)关系是两个表之间的一种复杂关联,表示一个实体可以与多个其他实体相关联,反之亦然。...
1. **@ManyToOne**:在多方(例如学生)的实体类中,我们添加`@ManyToOne`注解来指定一对一的关联。例如,在`Student`类中,我们可以这样定义: ```java @Entity public class Student { @Id @GeneratedValue...
标题"Hibernate双向一对多"指的是Hibernate框架中的一个重要关系映射概念,即在一个实体类中,一个实例可以与多个另一个实体类的实例相关联,而在另一个实体类中,每个实例也可以关联到该实体类的一个实例。...
在数据库设计中,一对多关联是指一个实体可以与多个其他实体相关联,比如一个学生可以有多个课程,一个部门可以有多名员工。在Hibernate中,这种关系可以通过XML映射文件来配置。首先,我们需要在两个实体的映射文件...
SSH一对多(两表双向关联查询)是一种在Java Web开发中常见的数据操作方式,主要涉及到Spring、Struts和Hibernate这三大框架的集成使用。在这个场景下,我们将关注于如何通过Hibernate来实现数据库中的两个表——...
XML配置文件中,一对多关联将在`<set>`或`<list>`元素中声明,而在Java类上,我们将使用`@OneToMany`和`@ManyToOne`注解。 6. **操作关联对象**:在Java代码中,我们可以方便地添加、删除和查询关联的对象。例如,...
在Java的持久化框架Hibernate中,双向一对多关联是一种常见的数据模型关系,它涉及到两个实体类,一个实体可以有多个另一个实体的实例。本示例将深入探讨如何使用Hibernate进行双向一对多关系的增删查改操作。 首先...
- **注解配置**:在双向一对多关联中,一方使用`@ManyToOne`,另一方使用`@OneToMany`并设置`mappedBy`属性。对于多对一,一方用`@OneToOne`,另一方用`@OneToOne(mappedBy = "...")`。 - **XML配置**:需要在双方...
// 使用@OneToMany注解表示一对多关联 @OneToMany(mappedBy = "student") private List<Course> courses; } @Entity public class Course { @Id private Long id; // 在多方使用@ManyToOne注解,定义反向...
在编程领域,多对多双向关联是一种常见的关系数据库设计概念,尤其在ORM(对象关系映射)框架中,如Hibernate、JPA等。这个概念主要应用于数据模型的设计,旨在反映现实世界中两个实体之间复杂的关系。 标题“多对...