cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrey Razumovsky <razumovsky.and...@gmail.com>
Subject Re: Hollow object throwing FaultFailureException
Date Wed, 07 Oct 2009 07:43:00 GMT
Hi,

I think this happens because HOLLOW object instance is not the same as NEW
object you're creaing. To get rid of HOLLOW object, I reccomend invalidating
ENTITYASSNSTOENTITY that points to missing row after healing that row (using
ObjectContext.invalidateObjects()).

Hope this helps,

2009/10/7 Lawrence Gerstley <lawgers@gmail.com>

> Hello,
>
> I've searched back through old postings and seen a little bit about this
> back in V2, but nothing recently. Was wondering if anyone had any idea how
> to handle this problem:
>
> Take a model including two tables: ENTITYASSNTOENTITY and ENTRYSTATE, where
> the column ENTRYSTATEID is present in both. ENTITYASSNTOENTITY.ENTRYSTATEID
> is a FK to ENTRYSTATE.ENTRYSTATEID (Primary Key). This is modeled as a
> one-to-one relationship.
>
> Problematically, it is possible for the ENTRYSTATEID in ENTITYASSNSTOENTITY
> to have a key populated in it that is now missing in ENTRYSTATE. Certainly,
> this breaks integrity, but that's not under my control for historical and
> other reasons. Thus, when I have an ENTITYASSNSTOENTITY, such as eate1, and
> I want to get to the related ENTRYSTATE with a "toEntryState" method, I get
> a hollow object that refers to a missing ENTRYSTATE record. If I try to
> access any fields within that record, I get and catch a
> "FaultFailureException", indicating that I have no matching row in the
> database. That's all fine.
>
> What I need to do is to gracefully handle the error by allowing the
> database to "self-heal" from such a missing record. I want to populate the
> hollow object with values and commit it to reinsert a row in the database to
> correct for the integrity error, or create a new ENTRYSTATE object to take
> the place of the hollow and absent one. I tried to create a
> childDataContext, move the hollow and absent ENTRYSTATE record to it,
> populate, then commitChanges, but this still throws a follow-on exception
> for the missing row. If I create a new ENTRYSTATE and try to attach it with
> eate1.setToEntryState(newEntryState), I also get the same error related to
> the absent record. When the application is restarted, however, all works
> fine, because the missing record was committed and persisted, and now no
> exceptions are thrown. The issue is that I want to handle this gracefully
> with no necessary reloading.
>
> Reading from previous postings, I saw some information on having to treat
> the relationship as a many-to-one, and handling it with covering methods. Is
> this the only fix for this issue? Should I commit the missing record,
> invalidate the state of the ENTITYASSNSTOENTITY object and reload?
>
> As always. thanks for any ideas you might have.
>
> Cheers--Lawrence
>



-- 
Andrey

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message