Hello, me again!
Are you certain it is possible to handle fetches and creations in
validateForInsert like this for example:
public void validateForInsert(ValidationResult validationResult)
{
Scope scope = Scope.scopeWithShortNameInContext(this.getShortName
(),this.getDataContext());
if(scope == null)
{
RegistryScope registryScope = new RegistryScope();
this.getDataContext().registerNewObject(registryScope);
registryScope.setShortName(this.getShortName());
registryScope.setScopeClass("REGISTRY");
registryScope.setName(this.getLongName());
registryScope.setRegistry(this);
}
}
I get a wonderfull index out of bounds deep in the cayenne classes:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:546)
at java.util.ArrayList.get(ArrayList.java:321)
at java.util.Collections$UnmodifiableList.get
(Collections.java:1155)
at
org.apache.cayenne.access.trans.SelectTranslator.appendQueryColumns
(SelectTranslator.java:400)
at
org.apache.cayenne.access.trans.SelectTranslator.buildResultColumns
(SelectTranslator.java:338)
at
org.apache.cayenne.access.trans.SelectTranslator.createSqlString
(SelectTranslator.java:113)
at
org.apache.cayenne.dba.mysql.MySQLSelectTranslator.createSqlString
(MySQLSelectTranslator.java:31)
at
org.apache.cayenne.access.trans.QueryAssembler.createStatement
(QueryAssembler.java:95)
at org.apache.cayenne.access.jdbc.SelectAction.performAction
(SelectAction.java:71)
at org.apache.cayenne.access.DataNodeQueryAction.runQuery
(DataNodeQueryAction.java:59)
at org.apache.cayenne.access.DataNode.performQueries
(DataNode.java:273)
at org.apache.cayenne.access.DataDomainQueryAction.runQuery
(DataDomainQueryAction.java:319)
at org.apache.cayenne.access.DataDomainQueryAction.access$000
(DataDomainQueryAction.java:60)
at org.apache.cayenne.access.DataDomainQueryAction
$1.transform(DataDomainQueryAction.java:291)
at org.apache.cayenne.access.DataDomain.runInTransaction
(DataDomain.java:820)
at
org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction
(DataDomainQueryAction.java:288)
at org.apache.cayenne.access.DataDomainQueryAction.execute
(DataDomainQueryAction.java:109)
at org.apache.cayenne.access.DataDomain.onQuery
(DataDomain.java:730)
at org.apache.cayenne.util.ObjectContextQueryAction.runQuery
(ObjectContextQueryAction.java:217)
at org.apache.cayenne.access.DataContextQueryAction.execute
(DataContextQueryAction.java:54)
at org.apache.cayenne.access.DataContext.onQuery
(DataContext.java:1386)
at org.apache.cayenne.access.DataContext.performQuery
(DataContext.java:1375)
at ch.rodano.role.model.Scope.scopeWithShortNameInContext
(Scope.java:18)
at ch.rodano.role.model.Registry.validateForInsert
(Registry.java:39)
On Jan 17, 2007, at 8:53 AM, Andrus Adamchik wrote:
> Hi Alex,
>
> Yes you can do that. Validation routine is executed before object
> changes are finalized, allowing arbitrary object operations to be
> performed during the validation.
>
> Andrus
>
>
> On Jan 17, 2007, at 12:07 AM, Alexander Lamb (dev) wrote:
>
>> Hello list,
>>
>> I am currently using Cayenne 2.0.
>>
>> I read it was possible to modify objects during a
>> validateForInsert or validateForSave call (e.g. not the same as
>> old WebObjects).
>>
>> What about creating a new object and inserting it in the
>> DataContext? Will it get saved at the same time?
>>
>> My problem is the following:
>>
>> I have an object which has a to-one relationship to another
>> object. That other object has to be created at the same time as
>> the first one. I would like to make it automatic so the user of
>> the library I am writing can simply create and insert the first
>> object and the second one will follow.
>>
>> To understand why I am creating two objects related one-to-one it
>> is because I have an entity which can be related (to-one) to
>> either one of four other entities. I am doing this instead of
>> modeling things with a class hierarchy since cayenne doesn't
>> support multiple tables class hierarchies.
>>
>> Thanks for any hints!
>>
>> Alex
>>
>
This archive was generated by hypermail 2.0.0 : Sun Jan 21 2007 - 12:51:01 EST