Hibernate双向关联插入数据时候的怪问题
简单描述一下表结构:主表Team,从表Player,建立外键关联。
以下是HBM文件:
Team:
- <hibernate-mapping>
- <class name="com.hibernatedemo.model.Team" table="team" catalog="hibernatedemo">
- <comment></comment>
- <id name="id" type="string">
- <column name="id" length="32" />
- <generator class="assigned" />
- </id>
- <property name="name" type="string">
- <column name="name" length="32" not-null="true">
- <comment></comment>
- </column>
- </property>
- <set name="players" inverse="true" cascade="all">
- <key>
- <column name="team" length="32" not-null="true">
- <comment></comment>
- </column>
- </key>
- <one-to-many class="com.hibernatedemo.model.Player" />
- </set>
- </class>
- </hibernate-mapping>
Palyer:
- <hibernate-mapping>
- <class name="com.hibernatedemo.model.Player" table="player" catalog="hibernatedemo">
- <comment></comment>
- <id name="id" type="string">
- <column name="id" length="32" />
- <generator class="assigned" />
- </id>
- <many-to-one name="team" class="com.hibernatedemo.model.Team" fetch="select">
- <column name="team" length="32" not-null="true">
- <comment></comment>
- </column>
- </many-to-one>
- <property name="name" type="string">
- <column name="name" length="32" not-null="true">
- <comment></comment>
- </column>
- </property>
- <property name="gender" type="java.lang.Boolean">
- <column name="gender">
- <comment></comment>
- </column>
- </property>
- <property name="birthday" type="date">
- <column name="birthday" length="10">
- <comment></comment>
- </column>
- </property>
- </class>
- </hibernate-mapping>
插入数据的代码如下:
- Transaction tx = session.beginTransaction();
- for(int i=0;i<2;i++) {
- Team team = new Team();
- team.setId("Team" + new Integer(i).toString());
- team.setName(team.getId());
- Set
players = new HashSet (); - for(int j=0;j<10;j++) {
- Player player = new Player();
- player.setId("Player" + team.getId()+"."+new Integer(j).toString());
- player.setName(player.getId());
- player.setBirthday(new Date());
- player.setGender(true);
- player.setTeam(team);
- players.add(player);
- }
- team.setPlayers(players);
- session.save(team);
- }
- tx.commit();
执行代码,SQL打印如下:
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: select player_.id, player_.team as team1_, player_.name as name1_, player_.gender as gender1_, player_.birthday as birthday1_ from hibernatedemo.player player_ where player_.id=?
Hibernate: insert into hibernatedemo.team (name, id) values (?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.team (name, id) values (?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
Hibernate: insert into hibernatedemo.player (team, name, gender, birthday, id) values (?, ?, ?, ?, ?)
问题是:为什么在insert语句之前,会执行select语句,对player进行查询呢?请指教
评论
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 4858 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
web.xml如何配置才能让打 ...
xml文件不能打入jar包里面
-- by dingyuan -
关于Hibernate加载数据时 ...
动态代理机制常用有有两种技术: 一个是cglib (class) 还有一个是ja ...
-- by antonyup_2006 -
Hibernate双向关联插入数 ...
哈哈,你这个问题的关键就在“cascade="all"”,如果你这样设置了,你对 ...
-- by fangang -
关于Hibernate加载数据时 ...
pikachu 写道一般来说,需要lazy的就会被cglib,不需要lazy的就 ...
-- by johnnylzb -
关于Hibernate加载数据时 ...
一般来说,需要lazy的就会被cglib,不需要lazy的就用原来的。转新手!
-- by pikachu






评论排行榜