Bugs item #842237, was opened at 2003-11-14 18:59 Message generated for change (Comment added) made by loubyansky You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=376685&aid=842237&group_id=22866
Category: JBossCMP Group: v3.2 >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Arnold Hahamyan (ahahamyan) Assigned to: Alexey Loubyansky (loubyansky) Summary: Optimistic Locking Problem with JBoss 3.2.2 Initial Comment: I am trying to use the version-column strategy for optimistic locking. I have a table on mysql which has a version column (bigint). I have cmp getter and setters for this column on my entity bean just like other fields. In order to check to see if the client has stale data when updating I am checking version number of the DTO (value object) against the bean's version number in a modify method on the bean class. I am using the Instance per Transaction 2.x entity bean configuration and extending it by overriding the lock-policy NoLock with OptimisticLock as show in the documentation. I also have the following specified in the jbosscmp-jdbc.xml for the entity bean. <optimistic-locking> <version-column/> <field-name>version</field-name> <column-name>version</column-name> </optimistic-locking> When I am creating a new entity bean through ejbcreate, I get the following error which leads me to believe that I cannot have cmp getters/setters on the version field, but I need to be able to check for stale data the client might have had during the "think-time" jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Us er] Executing SQL: INSERT INTO usr(username, password, ftp_username, ftp_password, admin_rights, alter_media, alter_segments, alter_schedules, alter_players, version, version) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#userName] Set parameter: index=1, jdbcType=VARCHAR, value=arnold 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#password] Set parameter: index=2, jdbcType=VARCHAR, value=secret 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#ftpUserName] Set parameter: index=3, jdbcType=VARCHAR, value=firesign-ftp-usr 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#ftpPassword] Set parameter: index=4, jdbcType=VARCHAR, value=firesign-ftp-pass 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#adminRights] Set parameter: index=5, jdbcType=VARCHAR, value=yes 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#alterMedia] Set parameter: index=6, jdbcType=VARCHAR, value=yes 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#alterSegments] Set parameter: index=7, jdbcType=VARCHAR, value=no 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#alterSchedules] Set parameter: index=8, jdbcType=VARCHAR, value=no 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#alterPlayers] Set parameter: index=9, jdbcType=VARCHAR, value=yes 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBrid ge.User#version] Set parameter: index=10, jdbcType=BIGINT, value=NULL 2003-11-13 21:59:41,224 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCLongVersionFi eldBridge.User#version] Set parameter: index=11, jdbcType=BIGINT, value=1 2003-11-13 21:59:41,264 ERROR [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityComman d.User] Could not create entity java.sql.SQLException: General error, message from server: "Column 'version' specified twice" The optimistic locking feature works fine as long as I do not use the same field with CMP getter and setters, but then how to I make sure that the client is not working with stale data. The test was performed on Windows XP PRO using JDK 1.4.2, JBoss 3.2.2, and MySQL 4.0.16 ---------------------------------------------------------------------- >Comment By: Alexey Loubyansky (loubyansky) Date: 2003-11-15 20:28 Message: Logged In: YES user_id=543482 Fixed in Branch_3_2 and HEAD. Thanks. ---------------------------------------------------------------------- Comment By: Arnold Hahamyan (ahahamyan) Date: 2003-11-15 07:31 Message: Logged In: YES user_id=785553 I got this to work once I removed the cmp-field declarations for the version column for the entity bean in the jbossjdbc- cmp.xml and ejb-jar.xml files. The abstract getters and setters in the bean class work fine. It seems that the field that is used for optimistic locking (version, timestamp, etc..) cannot also be declared as a cmp-field in the xml files even though it can be used as one. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=376685&aid=842237&group_id=22866 ------------------------------------------------------- This SF. Net email is sponsored by: GoToMyPC GoToMyPC is the fast, easy and secure way to access your computer from any Web browser or wireless device. Click here to Try it Free! https://www.gotomypc.com/tr/OSDN/AW/Q4_2003/t/g22lp?Target=mm/g22lp.tmpl _______________________________________________ JBoss-Development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development