Joined: Fri Aug 20, 2004 11:48 am Posts: 7
|
Read the rules before posting!
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version: 2.1.8
Mapping documents: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="com.mobileserver.Player" table="player" lazy="true"> <id name="playerID" column="playerid" type="long" length="12"> <generator class="native"/> </id> <property name="name" column="name" type="string" length="30" not-null="true"/> <property name="phoneNo" column="phoneno" type="string" length="12" not-null="true"/> <property name="type" column="type" type="string" length="1" not-null="true"/> <property name="joinDate" column="joindate" type="timestamp" length="19" not-null="true"/> <property name="password" column="password" type="string" length="15" not-null="true"/> <property name="emailAddress" column="emailaddress" type="string" length="60" not-null="true"/> <property name="startBalance" column="startbalance" type="long" length="12" not-null="true"/> <property name="creditPoint" column="creditpoint" type="long" length="12" not-null="true"/> </class> </hibernate-mapping>
player table structure: DROP TABLE IF EXISTS `player`; CREATE TABLE `player` ( `PlayerID` int(12) NOT NULL auto_increment, `Name` varchar(30) NOT NULL default '', `PhoneNo` varchar(12) NOT NULL default '0', `Type` varchar(2) NOT NULL default '', `JoinDate` datetime NOT NULL default '0000-00-00 00:00:00', `Password` varchar(15) NOT NULL default 'password', `EmailAddress` varchar(60) NOT NULL default '', `StartBalance` int(12) NOT NULL default '0', `CreditPoint` bigint(12) NOT NULL default '0', `OperatorID` int(2) NOT NULL default '0', `LoginID` varchar(10) NOT NULL default '', PRIMARY KEY (`PlayerID`), UNIQUE KEY `EmailAddress` (`EmailAddress`), UNIQUE KEY `LoginID` (`LoginID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Code between sessionFactory.openSession() and session.close():
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); List playerList = session.find("from Player where playerid = 1"); Player player = (Player) playerList.get(0); System.out.println("Player 's CreditPoint: " + player.getCreditPoint());
playerList = session.find("from Player where playerid = 1"); player = (Player) playerList.get(0); System.out.println("Player 's CreditPoint: " + player.getCreditPoint()); playerList = session.find("from Player where playerid = 2"); player = (Player) playerList.get(0); System.out.println("Player 's CreditPoint: " + player.getCreditPoint());
session.close();
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mmgame?autoReconnect=true&useUnicode=true&characterEncoding=utf8</property> <property name="show_sql">false</property> <property name="use_outer_join">true</property> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.username">mmgame</property> <property name="hibernate.connection.password">mmgame</property> <!-- configuration pool via c3p0--> <property name="c3p0.acquire_increment">1</property> <property name="c3p0.idle_test_period">100</property> <!-- seconds --> <property name="c3p0.max_size">100</property> <property name="c3p0.max_statements">0</property> <property name="c3p0.min_size">10</property> <property name="c3p0.timeout">100</property> <!-- seconds --> <!-- DEPRECATED very expensive property name="c3p0.validate>--> <!-- Mapping files --> <mapping resource="Player.hbm.xml"/> </session-factory> </hibernate-configuration>
Name and version of the database you are using: mysql 4.1.10a-nt
JDBC driver: mysql-connector-java-3.1.7-bin.jar
Connection Pool: c3p0-0.9.0-pre2.jar
The generated SQL (show_sql=true): The Orginal credit point for player 1 and player2 is 999999;
While I change player 1 's credit point to 8888 in Database between sessionFactory.openSession() and the find session.find();
Now output is: Hibernate: select player0_.playerid as playerid, player0_.name as name, player0_.phoneno as phoneno, player0_.type as type, player0_.joindate as joindate, player0_.password as password, player0_.emailaddress as emailadd7_, player0_.startbalance as startbal8_, player0_.creditpoint as creditpo9_, player0_.operatorid as operatorid from player player0_ where (playerid=1 ) Player 's CreditPoint: 8888
Secondly, I try to change player 1 's credit point again, Now I change it to 7777. Before the second session.find() statement;
Now output is: Hibernate: select player0_.playerid as playerid, player0_.name as name, player0_.phoneno as phoneno, player0_.type as type, player0_.joindate as joindate, player0_.password as password, player0_.emailaddress as emailadd7_, player0_.startbalance as startbal8_, player0_.creditpoint as creditpo9_, player0_.operatorid as operatorid from player player0_ where (playerid=1 ) Player 's CreditPoint: 8888
No change to the output???????
The third statement I try to change another player 's credit point to 22222 (Player2). Before the third session.find() statement;
No effect of the session.find()????????
Hibernate: select player0_.playerid as playerid, player0_.name as name, player0_.phoneno as phoneno, player0_.type as type, player0_.joindate as joindate, player0_.password as password, player0_.emailaddress as emailadd7_, player0_.startbalance as startbal8_, player0_.creditpoint as creditpo9_, player0_.operatorid as operatorid from player player0_ where (playerid=2 ) Player 's CreditPoint: 999999
After I read Hibernate in action this book 's charper 7.6.3 Caching queries <hibernate.cache.use_query_cache> By default is set to false, so that mean if I use the session.find() it would not keep the cache...
Would anybody tell me why the session.find() won't work after the first call?
|
|