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这样的错误