读书人

hibernate一对多双向关联中如何配置li

发布时间: 2012-10-21 09:00:07 作者: rapoo

hibernate一对多双向关联中怎么配置list

假设有一个文档管理者类User,和一个文档类Archives。其中User和Archives是一对多双向关联关系

表现在类中如下(此处省略了属性的set和get方法)

public class User implements Serializable {private static final long serialVersionUID = -7327980678002278494L;/** 定义id */    private Long id;    /** 定义用户名*/    private String username;    /** 定义密码*/    private String password;//定义该用户要管理的档案    private List<Archives> archives;  }
public class Archives implements Serializable {/** *  */private static final long serialVersionUID = 1L;private Long id;// 文档名字private String name;// 定义文档管理者private User manager;}


对于数据库表方面

文档管理表的SQL语句如下

create table USER (   ID bigint not null,   USER_NAME varchar(15),   primary key(ID));

档案表的SQL语句如下

create table ARCHIVES(ARCHIVES_ID bigint not null,ARCHIVES_NAME char(15),ARCHIVES_REMARK char(15) ,USER_ID bigint,oreign key(USER_ID) references A_USER(ID),primary key(ARCHIVES_ID));

下面是各自的hibernate文件配置User.hbm.xml

<list name = "archives"  table = "ARCHIVES" cascade = "save-update"  lazy="true">   <!-- a_user表所关联的表的外键,此处为ARCHIVES表的USER_ID -->   <key column = "USER_ID">   </key>   <!-- ARCHIVES_ID是ARCHIVES表中的主键 -->    <index column = "ARCHIVES_ID"></index>   <!-- 表示user和archives是一对多关系 -->   <one-to-many class = "com.archivesManagement.domain.Archives"></one-to-many></list> 


Archives.hbm.xml中对Archives属性manager的配置

<!-- USER_ID为ARCHIVES的外键 --><many-to-one name="manager"    column = "USER_ID"  class = "com.archivesManagement.domain.User"  not-null = "true"></many-to-one>


如果配置出错的话很容易报org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of这样的错误

读书人网 >编程

热点推荐