On 12/07/2010 02:10 PM, Marius Dumitru Florea wrote: > On 12/07/2010 01:10 PM, farouk korteby wrote: >> Hi, >> > >> The string property is limited to 255 chars, you must >> use text-area property. > > Sure, but that doesn't explain why: > > (1) The string is not truncated to match the limit.
Because it's not exactly clear what the size is: - number of characters? - number of bytes? If using UTF-8, then the number of bytes can be 2-3 times more than the number of chars. Also, it's not always required to truncate, HSQLDB doesn't complain and accepts even longer strings. > (2) The database ends up in an invalid state (e.g. I can't modify the > object, I can't recreate the object, I can't modify the class..) > > Even if (1) is arguable, (2) shouldn't happen. Are you able to reproduce > (2)? Indeed, this should never happen. Might be a different bug that caused this. > Thanks. > Marius > >> >> Take look >> at >> \xwiki-enterprise-jetty-hsqldb-2.0.2\webapps\xwiki\WEB-INF\lib\xwiki-core-xx.jar >>>> xwiki.hbm.xml >> ----------------------------------------------------------------------------------------------------- >> <joined-subclass name="com.xpn.xwiki.objects.StringProperty" >> table="xwikistrings"> >> <key> >> <column name="XWS_ID" /> >> <column name="XWS_NAME" /> >> </key> >> <property name="value" type="string"> >> <column name="XWS_VALUE" *length="255"* /> >> </property> >> </joined-subclass> >> ----------------------------------------------------------------------------------------------------- >> >> >> 2010/12/7 Marius Dumitru Florea<[email protected]> >> >>> Hi devs, >>> >>> I have a serious problem. I'm using a fresh XE 2.6 with MySql (fresh db >>> + XE 2.6 XAR import) and I'm doing this: >>> >>> 1. Create a class Main.TestClass with only one property (say "city") of >>> type "String". >>> 2. Add an object of type Main.TestClass to Main.TestClass page and set >>> the value of "city" to a large string (say 270 characters). >>> 3. Save. >>> >>> I get: >>> >>> ----------8<---------- >>> org.hibernate.exception.DataException: could not insert: >>> [com.xpn.xwiki.objects.StringProperty] >>> ... >>> Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too >>> long for column 'XWS_VALUE' at row 1 >>> ---------->8---------- >>> >>> IMO "Data too long" should be only a warning. Why isn't the string >>> simply truncated if it's too long? >>> >>> If I go back to the object editor the value of the "city" property is >>> empty. If I try to set the value to a short string, say "Paris" and then >>> save, I get: >>> >>> ----------8<---------- >>> Failed to commit or rollback transaction. Root cause [] >>> ... >>> Wrapped Exception: >>> >>> org.hibernate.StaleObjectStateException: Row was updated or deleted by >>> another transaction (or unsaved-value mapping was incorrect): >>> [com.xpn.xwiki.objects.StringProperty#<?xml version="1.0" >>> encoding="UTF-8"?> >>> >>> <city>Paris</city> >>> ] >>> ---------->8---------- >>> >>> So how can I fix this? If I delete the object and then create a new one, >>> setting the value of "city" to "Rome" I get the same exception as >>> before, but with: >>> >>> <city>Rome</city> >>> >>> Is this related to my configuration? >>> >>> Thanks, >>> Marius -- Sergiu Dumitriu http://purl.org/net/sergiu/ _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

