Does anybody have any news on this, please ?
Thanks.

---------------------------- Original Message ----------------------------
Subject: Re: 3.1B1 Validation Exception
Date:    Thu, September 20, 2012 11:27
--------------------------------------------------------------------------

Not sure how to submit the example, but here goes:

1.  TestMap.map.xml

<?xml version="1.0" encoding="utf-8"?>
<data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap";
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
         xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap
http://cayenne.apache.org/schema/3.0/modelMap.xsd";
         project-version="6">
        <property name="defaultPackage" value="test.tables"/>
        <db-entity name="DOCUMENTS">
                <db-attribute name="CLEINT_NO" type="VARCHAR" isMandatory="true"
length="50"/>
                <db-attribute name="DOC_DATE" type="TIMESTAMP" 
isMandatory="true"/>
                <db-attribute name="DOC_ID" type="BIGINT" isPrimaryKey="true"
isGenerated="true" isMandatory="true"/>
                <db-attribute name="DOC_INFO" type="CLOB" isMandatory="true"/>
                <db-attribute name="DOC_REF_NO" type="VARCHAR" 
isMandatory="true"
length="50"/>
        </db-entity>
        <obj-entity name="Document" className="test.tables.Document"
dbEntityName="DOCUMENTS">
                <obj-attribute name="client_id" type="java.lang.String"
db-attribute-path="CLEINT_NO"/>
                <obj-attribute name="docDate" type="java.sql.Timestamp"
db-attribute-path="DOC_DATE"/>
                <obj-attribute name="info" type="java.lang.String"
db-attribute-path="DOC_INFO"/>
                <obj-attribute name="reference" type="java.lang.String"
db-attribute-path="DOC_REF_NO"/>
                <pre-persist method-name="onPrePersist"/>
        </obj-entity>
</data-map>

--------------------------------------------------------------------
2.  Document class

package test.tables;
import java.sql.Timestamp;
import test.tables.auto._Document;

public class Document extends _Document
{
    @Override
    protected void onPrePersist()
    {
         setDocDate( new Timestamp( System.currentTimeMillis() ) );
    }
}

--------------------------------------------------------------------
3.  Test class

import org.apache.cayenne.configuration.server.ServerRuntime;
import test.tables.Document;

public class Test
{
    public static void main( String[] args )
    {
        ServerRuntime server = new ServerRuntime("cayenne-Test.xml");
        Document  newDoc = server.getContext().newObject( Document.class );

        newDoc.setClient_id( "12345" );
        newDoc.setReference( "Test entry" );
        newDoc.setInfo( "Some text about stuff." );

        newDoc.getObjectContext().commitChanges();
    }
}

--------------------------------------------------------------------
4.  The Exception

Exception in thread "main"
org.apache.cayenne.validation.ValidationException: [v.3.1B1 May 28 2012
20:59:56] Validation failures: Validation failure for
test.tables.Document.docDate: "docDate"  is required.
Validation failure for test.tables.Document.docDate: "docDate"  is required.
        at
org.apache.cayenne.access.ObjectStoreGraphDiff.validateAndCheckNoop(ObjectStoreGraphDiff.java:111)
        at 
org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:806)
        at 
org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:756)
        at Test.main(Test.java:16)

--------------------------------------------------------------------

Thanks.


> That doesn't sound like the right behavior.  Can you create small example
> that reproduces the problem?
>
> On Wednesday, September 19, 2012, wrote:
>
>> Is this a bug or am I doing something wrong ?
>>
>> I'm using 3.1B1 and getting a validation exception BEFORE my
>> onPrePersist lifecycle method is called ?
>>
>> Caused by: org.apache.cayenne.validation.ValidationException: [v.3.1B1
>> May 28 2012
20:59:56]org.apache.cayenne.access.ObjectStoreGraphDiff.validateAndCheckNoop(ObjectStoreGraphDiff.java:111)
>>         at
>> org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:806)
>>         at
>> org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:756)
>>
>>
>> The Cayenne Guide\Lifecycle Callbacks documentation indicates that
>> PrePersist is called "Prior to commit (and prior to "validateFor*")
>> within ObjectContext.commitChanges()"
>>
>> However from the above this doesn't seem to be the case ?
>>
>> So is this a bug or am I missing something ?
>>
>



Reply via email to