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 ? >> >