• 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: Use LocalDate as primary key
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Use LocalDate as primary key


  • Subject: Re: Use LocalDate as primary key
  • From: Chuck Hill <email@hidden>
  • Date: Tue, 26 Jan 2016 20:46:33 +0000
  • Thread-topic: Use LocalDate as primary key

I was wondering if EOF simply did not support this for primary keys but did not dig that far.  I have looked a little more and I think your conclusion is correct.  You could like find a way to get it use custom EOEntity/EOAttribute classes, but that might be more effort than it is worth to you.

Chuck




On 2016-01-26, 12:24 PM, "Samuel Pelletier" <email@hidden> wrote:

>Hi Chuck,
>
>After digging and stepping into the debugger, I figured out that the problem come in the globalID generation that uses the adaptorValueClass() method of EOAttribute which in turn uses the adaptorValueType() with only support 4 types (String, Number, Data and NSTimestamp).
>
>This part is totally broken with custom data type.
>
>My conclusion is custom data type are not supported as PK attributes.
>
>I create a work around in my DateMTA entity (used for report grouping by month, quarter, year, ...)
>
>	static public DateMTA forDate(EOEditingContext ec, LocalDate date) {
>		synchronized (GLOBAL_ID) {
>			if (_gids == null) {
>				NSMutableDictionary<LocalDate, EOGlobalID> gids = new NSMutableDictionary<LocalDate, EOGlobalID>();
>				for (DateMTA dateMTA : fetchAllDateMTAs(ec)) {
>					gids.setObjectForKey(dateMTA.globalId(), dateMTA.date());
>				}
>				_gids = gids.immutableClone();
>			}
>			EOGlobalID globalID = _gids.objectForKey(date);
>			return (DateMTA) ec.faultForGlobalID(globalID, ec);
>		}
>	}
>
>and when I need the relationship, I add this to the entity class:
>
>	public static ERXKey<DateMTA> DATE_MTA = new ERXKey<DateMTA>("dateMta");
>	private DateMTA dateMta;
>
>	public DateMTA dateMta() {
>		if (dateMta == null) {
>			dateMta = DateMTA.forDate(editingContext(), date());
>		}
>		return dateMta;
>	}
>
>
>It would be much nicer to simply create the relationship but for in memory stuff, this works great and stiff very efficient.
>
>Regards,
>
>Samuel
>
>
>> Le 26 janv. 2016 à 14:20, Chuck Hill <email@hidden> a écrit :
>>
>> How did you define the PK?  You will need to set it up as a custom data type, the same as if you were using it as a regular attribute.  Why does it think it is a NSTimestamp?
>>
>> Chuck
>>
>>
>>
>>
>>
>> On 2016-01-22, 2:35 PM, "webobjects-dev-bounces+chill=email@hidden on behalf of Samuel Pelletier" <webobjects-dev-bounces+chill=email@hidden on behalf of email@hidden> wrote:
>>
>>> Hi,
>>>
>>> I would like to create use a soda LocalDate as primary key for an entity used for report grouping with month, quarter, year...
>>>
>>> My creates and inserts works but my fetches fail with this exception:
>>> Attempt to create an EOGlobalID for the entity "DateMTA" with a primary key component of type org.joda.time.LocalDate instead of type com.webobjects.foundation.NSTimestamp!
>>> at com.webobjects.eoaccess.EOEntity._coercePKInput(EOEntity.java:390)
>>>
>>> I dig a bit in the code and it seems to come from the adaptorValueClass() method in EOAttribute that think it should be a NSTimestamp instead of an LocalDate.
>>>
>>> I am not familial with EOAtribute and it's multiple class and types...
>>>
>>> Anyone can help me figure this out ?
>>>
>>> Samuel
>>> _______________________________________________
>>> 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
>

 _______________________________________________
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: 
 >Use LocalDate as primary key (From: Samuel Pelletier <email@hidden>)
 >Re: Use LocalDate as primary key (From: Chuck Hill <email@hidden>)
 >Re: Use LocalDate as primary key (From: Samuel Pelletier <email@hidden>)

  • Prev by Date: Re: Use LocalDate as primary key
  • Next by Date: Re: WOWODC 2016: call for papers!
  • Previous by thread: Re: Use LocalDate as primary key
  • Next by thread: Instance becomes unresponsive after 12 hours
  • Index(es):
    • Date
    • Thread