Hibernate双向关联插入数据时候的怪问题

简单描述一下表结构:主表Team,从表Player,建立外键关联。

以下是HBM文件:

Team:

<hibernate-mapping></hibernate-mapping>

xml 代码
  1. <hibernate-mapping>  
  2.     <class name="com.hibernatedemo.model.Team" table="team" catalog="hibernatedemo">  
  3.         <comment></comment>  
  4.         <id name="id" type="string">  
  5.             <column name="id" length="32" />  
  6.             <generator class="assigned" />  
  7.         </id>  
  8.         <property name="name" type="string">  
  9.             <column name="name" length="32" not-null="true">  
  10.                 <comment></comment>  
  11.             </column>  
  12.         </property>  
  13.         <set name="players" inverse="true" cascade="all">  
  14.             <key>  
  15.                 <column name="team" length="32" not-null="true">  
  16.                     <comment></comment>  
  17.                 </column>  
  18.             </key>  
  19.             <one-to-many class="com.hibernatedemo.model.Player" />  
  20.         </set>  
  21.     </class>  
  22. </hibernate-mapping>  



Palyer:

<hibernate-mapping></hibernate-mapping>

xml 代码
  1. <hibernate-mapping>  
  2.     <class name="com.hibernatedemo.model.Player" table="player" catalog="hibernatedemo">  
  3.         <comment></comment>  
  4.         <id name="id" type="string">  
  5.             <column name="id" length="32" />  
  6.             <generator class="assigned" />  
  7.         </id>  
  8.         <many-to-one name="team" class="com.hibernatedemo.model.Team" fetch="select">  
  9.             <column name="team" length="32" not-null="true">  
  10.                 <comment></comment>  
  11.             </column>  
  12.         </many-to-one>  
  13.         <property name="name" type="string">  
  14.             <column name="name" length="32" not-null="true">  
  15.                 <comment></comment>  
  16.             </column>  
  17.         </property>  
  18.         <property name="gender" type="java.lang.Boolean">  
  19.             <column name="gender">  
  20.                 <comment></comment>  
  21.             </column>  
  22.         </property>  
  23.         <property name="birthday" type="date">  
  24.             <column name="birthday" length="10">  
  25.                 <comment></comment>  
  26.             </column>  
  27.         </property>  
  28.     </class>  
  29. </hibernate-mapping>  

 

插入数据的代码如下:

java 代码
  1. Transaction tx = session.beginTransaction();   
  2.         for(int i=0;i<2;i++) {   
  3.             Team team = new Team();   
  4.             team.setId("Team" + new Integer(i).toString());   
  5.             team.setName(team.getId());   
  6.             Set <player></player>  players = new HashSet <player></player> ();   
  7.             for(int j=0;j<10;j++) {   
  8.                 Player player = new Player();   
  9.                 player.setId("Player" + team.getId()+"."+new Integer(j).toString());   
  10.                 player.setName(player.getId());   
  11.                 player.setBirthday(new Date());   
  12.                 player.setGender(true);   
  13.                 player.setTeam(team);   
  14.                 players.add(player);   
  15.             }   
  16.             team.setPlayers(players);   
  17.             session.save(team);   
  18.         }   
  19.         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进行查询呢?请指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值