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

Reply via email to