Hello,

I'm trying to get this to work for PostgreSQL, though I suspect it would be 
similar for any RDBMS that offered a type like "text[]":

https://www.postgresql.org/docs/current/arrays.html

Ideally, I'd like to map an NSArray<String> attribute on the model side to a 
text[] column in Postgres, though any variation on this would be a good start. 
I can't quite get there, even with the smarts added by ERAttributeExtension. 
This is as close as I can get:

        {
            adaptorValueConversionClassName = 
"net.logicsquad.woextensions.eof.LSValueConversion"; 
            adaptorValueConversionMethodName = 
stringArrayToPostgreSQLTextArray; 
            allowsNull = Y; 
            columnName = "metadata_key_list"; 
            externalType = anyarray; 
            name = metadataKeyList; 
            valueClassName = "com.webobjects.foundation.NSArray"; 
            valueFactoryClassName = 
"net.logicsquad.woextensions.eof.LSValueConversion"; 
            valueFactoryMethodName = arrayToStringArray; 
        }, 

I'm only working on the output side for the minute. LSValueConversion. 
stringArrayToPostgreSQLTextArray(NSArray<String>) returns a subclass of 
java.sql.Array, which I assume is what the Postgres JDBC driver wants. However, 
when I try to save an object, it's EOAttribute that complains:

[2022-11-2 5:31:59 UTC] <main> 
com.webobjects.eoaccess.EOGeneralAdaptorException: EOAttribute 
adaptorValueByConvertingAttributeValue(Object): Unable to convert value of 
class net.logicsquad.woextensions.eof.PostgresqlTextArray for attribute 
'metadataKeyList' in entity 'DocumentVersion' to adaptor type 
EOAttribute.AdaptorBytesType.  Check the signature of the conversion method 
com.webobjects.foundation.NSArray.stringArrayToPostgreSQLTextArray().

To my eye, that's suggesting that the conversion method is not producing an 
object of type "bytes", which is true enough—it's a subclass of java.sql.Array. 
It doesn't help to comment out the part of EOAttribute that's throwing that 
exception, either:

2022-11-02 05:40:58.728 WARN  NSLog - A fatal exception occurred: Unable to 
create a byte representation for class 
"net.logicsquad.woextensions.eof.PostgresqlTextArray"

At this point I'm out of ideas. Has anyone done this or anything like it?


-- 
Paul Hoadley
https://logicsquad.net/
https://www.linkedin.com/company/logic-squad/

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to