cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ramiro Aparicio <ramiro.apari...@prot-on.com>
Subject Re: 3.1B1 Validation Exception
Date Wed, 10 Oct 2012 12:17:43 GMT
Umm we found the same pattern some time ago, and just moved our default 
values to onPostAdd, and I that is working fine for us, but I am not 
sure if we are using it with mandatory fields.

El 10/10/2012 13:42, dollj@xsinet.co.za escribió:
> 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 ?
>>>
>
>


Mime
View raw message