• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Check / Force field uniqueness in EOF
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Check / Force field uniqueness in EOF


  • Subject: Re: Check / Force field uniqueness in EOF
  • From: Chuck Hill <email@hidden>
  • Date: Wed, 25 Mar 2009 12:51:55 -0700


On Mar 25, 2009, at 12:46 PM, Dan Grec wrote:

Full of questions today....

I have an EO that has a field "RemoteSystemID" that must be unique in the DB.
I have the constraint in the DB and that works well.


What I would like, is a way in EOF to detect non-uniqueness without going to the db and relying on the SQL Exception.

Won't work, can't work, don't do it!


Currently, I have something like this:

@Override
public void validateForSave() throws NSValidation.ValidationException {
validateRemoteSystemId();
super.validateForSave();
}


//check that no Categories have this same remoteSystemID
public void validateRemoteSystemId() {
NSArray<Category> categories = SCEOFetcher.objectsMatchingKeyAndValue(editingContext(), Category.class, _Category.REMOTE_SYSTEM_ID_KEY, remoteSystemId(), EOFetcher.DBEC);
if (categories.count() > 1)
throw new NSValidation.ValidationException("Category Remote System Id must be unique.", this, REMOTE_SYSTEM_ID_KEY);
}


This works really well if there is already one in the DB with a value of say "123" and I try to add with with a value of "123".
This does not work if I try to add two at the same time with a value of "567", it allows them both through.


Does anyone have a strategy to catch uniqueness at the EOF level?

Or, is it fine to just rely on the DB throwing an SQLException and catch that after ec().saveChanges() ?

That is the only way to guarantee uniqueness. You can use the code above to do a tentative validation (with the constraint still in place on the DB), but the the DB has to be the ultimate authority on what is and is not unique.



(I feel like letting that happen is bad, and might leave EOF in an un-happy state - is there any chance of that?)

No. Failures in saveChanges at the database level are expected by EOF and handled just fine.



Chuck

--
Chuck Hill             Senior Consultant / VP Development

Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/products/practical_webobjects







_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
References: 
 >Check / Force field uniqueness in EOF (From: Dan Grec <email@hidden>)

  • Prev by Date: Re: Check / Force field uniqueness in EOF
  • Next by Date: Re: Check / Force field uniqueness in EOF
  • Previous by thread: Re: Check / Force field uniqueness in EOF
  • Next by thread: Re: Check / Force field uniqueness in EOF
  • Index(es):
    • Date
    • Thread