Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] About Oracle User defined types

I don't recommend using NoIdentityMap.

The previous exception was missing the the initial lines. Can you please send it again?

-tom

On 23/01/2012 9:20 AM, Luis Dominguez wrote:
Hi folks.

Using descriptor.useNoIdentityMap() fixed the previous problem. But, this is the
new error message:

java.lang.NullPointerException
at
org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getMethodParameterTypes(PrivilegedAccessHelper.java:323)
at
org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.getSetMethodParameterType(MethodAttributeAccessor.java:168)
at
org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.getSetMethodParameterType(MethodAttributeAccessor.java:156)
at
org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:282)
at
org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:226)

I read about the security permissions. I setted

permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
     permission java.lang.RuntimePermission "accessDeclaredMembers";
     permission java.lang.RuntimePermission "getClassLoader";
     permission java.lang.RuntimePermission "getMethodParameterTypes";

in my JVM, but anything changed.

Help.



2012/1/20 Luis Dominguez <ldominguez.integra@xxxxxxxxx
<mailto:ldominguez.integra@xxxxxxxxx>>

    I have this error

    at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768)
    at
    org.eclipse.persistence.internal.identitymaps.IdentityMapManager.getIdentityMap(IdentityMapManager.java:923)
    at
    org.eclipse.persistence.internal.identitymaps.IdentityMapManager.acquireLock(IdentityMapManager.java:144)
    at
    org.eclipse.persistence.internal.sessions.IdentityMapAccessor.acquireLock(IdentityMapAccessor.java:92)
    at
    org.eclipse.persistence.internal.sessions.IdentityMapAccessor.acquireLock(IdentityMapAccessor.java:83)
    at
    org.eclipse.persistence.internal.sessions.AbstractSession.retrieveCacheKey(AbstractSession.java:4567)
    at
    org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:668)
    at
    org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildWorkingCopyCloneNormally(ObjectBuilder.java:612)
    at
    org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObjectInUnitOfWork(ObjectBuilder.java:565)
    at
    org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:497)
    at
    org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:456)
    at
    org.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:723)
    at
    org.eclipse.persistence.queries.ReadAllQuery.registerResultInUnitOfWork(ReadAllQuery.java:742)
    at
    org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:423)
    at
    org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1080)
    at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:808)
    at
    org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1040)
    at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:383)
    at
    org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1126)
    at
    org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2842)
    at
    org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1521)
    at
    org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1503)
    at
    org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1477)
    at org.luisd.App.main(App.java:91)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

    And this is what i did:

    ClassDescriptor descriptor = new ClassDescriptor();
             descriptor.useNoIdentityMap();

             ObjectArrayMapping pricesMapping = new ObjectArrayMapping();
              pricesMapping  .setReferenceClass(PType.class);
              pricesMapping  .setAttributeName("pricesList");
              pricesMapping  .setFieldName("PRICES_LIST");
              pricesMapping  .setStructureName("CT_PRICE");
              pricesMapping  .readOnly();
              pricesMapping  .setGetMethodName("getPricesList");
              pricesMapping  .setSetMethodName("setPricesList");

             descriptor.addMapping( pricesMapping   );

    StoredProcedureCall call = new StoredProcedureCall();
             call.setProcedureName("PKG.GET_DEVICES");
             call.useNamedCursorOutputAsResultSet("v_list");
             call.addNamedArgument("v_id");
             call.addNamedArgument("v_class");
             call.addNamedArgument("v_date");

    ReadAllQuery query = new ReadAllQuery();
             query.addArgument(" v_id ");
             query.addArgument(" v_class ");
             query.addArgument(" v_date ");
             query.setDescriptor(descriptor);
             query.setCall(call);

    List<Object> queryArgs = new ArrayList<Object>();
             queryArgs.add(new Long(12));
             queryArgs.add("p1");
             queryArgs.add(new Timestamp(System.currentTimeMillis()));

    Session activeSession = ((JpaEntityManager)
    main.em.getDelegate()).getActiveSession();
    List< PType > queryResultList = (List) activeSession.executeQuery(query,
    queryArgs);

    Help.

    2012/1/20 Tom Ware <tom.ware@xxxxxxxxxx <mailto:tom.ware@xxxxxxxxxx>>

        We have direct support for Arrays that has been around for quite a
        while.  (and JPA mapping support starting in EclipseLink 2.3)

        Documentation Link:

        http://wiki.eclipse.org/__Configuring_an_Object-__Relational_Data_Type_Array___Mapping_(ELUG)
        <http://wiki.eclipse.org/Configuring_an_Object-Relational_Data_Type_Array_Mapping_(ELUG)>


        JPA Mapping info:

        http://www.eclipse.org/__eclipselink/api/2.3/index.html
        <http://www.eclipse.org/eclipselink/api/2.3/index.html>

        -Tom


        On 20/01/2012 3:28 PM, Luis Dominguez wrote:

            Like this:

            Map types = conn.getTypeMap();
            types.put("C_PriceType", PriceType.class);
            conn.setTypeMap(types);

            java.sql.Array priceList  = rs.getArray("PRICE_LIST");



            2012/1/20 Tom Ware <tom.ware@xxxxxxxxxx <mailto:tom.ware@xxxxxxxxxx>
            <mailto:tom.ware@xxxxxxxxxx <mailto:tom.ware@xxxxxxxxxx>>>


                How would you access the fields of the object if you were using
            JDBC?

                -Tom


                On 20/01/2012 9:58 AM, Luis Dominguez wrote:




                    The Stored Procedures is in an oracle database. The
            procedure returns a
                    sys_refcursor, where the cursor has the following fields:

                    ID: it's a number field type.
                    Prices List: It's a list of Price type. An oracle user
            defined type with te
                    following structure:
                          * Id of price item: Number field
                          * priceAmount: amount. It's a NUMBER(12, 5) field.

                    If i used DataReadQuery with a StoredProcedureCall, the
            result list when the
                    query is executed has a list of DatabaseRecord, where the
            records has an
                    object
                    array for the prices list.

                    I need to obtain the prices values, but using DataReadQuery
            the prices
                    list is
                    returned as an Object array, with Object type elements, and no
                    possibilities to
                    cast to the desired object.

                    Help.


                        2012/1/20 Tom Ware <tom.ware@xxxxxxxxxx
            <mailto:tom.ware@xxxxxxxxxx> <mailto:tom.ware@xxxxxxxxxx
            <mailto:tom.ware@xxxxxxxxxx>>
            <mailto:tom.ware@xxxxxxxxxx <mailto:tom.ware@xxxxxxxxxx>
            <mailto:tom.ware@xxxxxxxxxx <mailto:tom.ware@xxxxxxxxxx>>>>



                            Can you explain a little more about what this custom
            type is?  We
                            provide a number of ways you can deal with special
            types and
                    your choice
                            will depend on how it is derived.

                            At the simplest level, you can specify a Converter
            on the object
                    that
                            maps to the special type.  That will allow you do do
            some
                    operations.

            http://wiki.eclipse.org/Using_______EclipseLink_JPA___Extensions_%____28ELUG%29#__Using_EclipseLink_____JPA___Converters
            <http://wiki.eclipse.org/Using_____EclipseLink_JPA_Extensions_%____28ELUG%29#Using_EclipseLink_____JPA_Converters>
            <http://wiki.eclipse.org/__Using___EclipseLink_JPA___Extensions_%__28ELUG%29#Using___EclipseLink___JPA_Converters
            <http://wiki.eclipse.org/Using___EclipseLink_JPA_Extensions_%__28ELUG%29#Using_EclipseLink___JPA_Converters>>

            <http://wiki.eclipse.org/____Using_EclipseLink_JPA_____Extensions_%28ELUG%29#Using_____EclipseLink_JPA_Converters
            <http://wiki.eclipse.org/__Using_EclipseLink_JPA___Extensions_%28ELUG%29#Using___EclipseLink_JPA_Converters>

            <http://wiki.eclipse.org/__Using_EclipseLink_JPA___Extensions_%28ELUG%29#Using___EclipseLink_JPA_Converters
            <http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#Using_EclipseLink_JPA_Converters>>>

                            Alternately, we have an event mechanism that will
            allow you to
                    access
                            the data at various points in the query.

            http://www.eclipse.org/______eclipselink/api/2.3/index.html
            <http://www.eclipse.org/____eclipselink/api/2.3/index.html>
            <http://www.eclipse.org/____eclipselink/api/2.3/index.html
            <http://www.eclipse.org/__eclipselink/api/2.3/index.html>__>

            <http://www.eclipse.org/____eclipselink/api/2.3/index.html
            <http://www.eclipse.org/__eclipselink/api/2.3/index.html>
            <http://www.eclipse.org/__eclipselink/api/2.3/index.html
            <http://www.eclipse.org/eclipselink/api/2.3/index.html>__>__>


                            If the data structure is, in fact, a Struct, you may
            be able to
                    make use
                            of our StructConverter to operate on it as it enters
            and leaves the
                            database.

            http://wiki.eclipse.org/Using_______EclipseLink_JPA___Extensions_(____ELUG)#How_to___Use_the_.______40StructConverter_Annotation
            <http://wiki.eclipse.org/Using_____EclipseLink_JPA_Extensions_(____ELUG)#How_to_Use_the_.____40StructConverter_Annotation>
            <http://wiki.eclipse.org/__Using___EclipseLink_JPA___Extensions_(__ELUG)#How_to___Use_the_.__40StructConverter___Annotation
            <http://wiki.eclipse.org/Using___EclipseLink_JPA_Extensions_(__ELUG)#How_to_Use_the_.__40StructConverter_Annotation>>

            <http://wiki.eclipse.org/____Using_EclipseLink_JPA_____Extensions_(ELUG)#How_to_Use_____the_.40StructConverter_____Annotation
            <http://wiki.eclipse.org/__Using_EclipseLink_JPA___Extensions_(ELUG)#How_to_Use___the_.40StructConverter___Annotation>

            <http://wiki.eclipse.org/__Using_EclipseLink_JPA___Extensions_(ELUG)#How_to_Use___the_.40StructConverter___Annotation
            <http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#How_to_Use_the_.40StructConverter_Annotation>>>

                            -Tom



                            On 19/01/2012 4:08 PM, Luis Dominguez wrote:

                                Hi everybody.

                                I'm using eclipselink with JPA. Actually, i'm using
                    eclipselink for
                                a stored
                                procedure call. The results of the stored
            procedure have a
            "column",
                                with a
                                custom type object value. The sentence

                                List<DatabaseRecord> queryResultList = (List)
                    ((JpaEntityManager)


              main.em.getDelegate()).______getActiveSession().______executeQuery(query,


                                queryArgs);

                                recovers a list of DatabaseRecord, with a field as
                                [Ljava.lang.Object;@10010ec
                                object. When i'm trying to iterate this array,
            only have a
                                [Ljava.lang.Object;,
                                with no possibilities of see the data.

                                How i can do that?






              _____________________________________________________

                                eclipselink-users mailing list
            eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
            <mailto:eclipselink-users@__eclipse.org
            <mailto:eclipselink-users@xxxxxxxxxxx>>
            <mailto:eclipselink-users@
            <mailto:eclipselink-users@>__ec__lipse.org <http://eclipse.org>
            <mailto:eclipselink-users@__eclipse.org
            <mailto:eclipselink-users@xxxxxxxxxxx>>>
            https://dev.eclipse.org/______mailman/listinfo/eclipselink-______users
            <https://dev.eclipse.org/____mailman/listinfo/eclipselink-____users>
            <https://dev.eclipse.org/____mailman/listinfo/eclipselink-____users
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users>>
            <https://dev.eclipse.org/____mailman/listinfo/eclipselink-____users
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users>
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users
            <https://dev.eclipse.org/mailman/listinfo/eclipselink-users>>>

                            _____________________________________________________

                            eclipselink-users mailing list
            eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
            <mailto:eclipselink-users@__eclipse.org
            <mailto:eclipselink-users@xxxxxxxxxxx>>
            <mailto:eclipselink-users@
            <mailto:eclipselink-users@>__ec__lipse.org <http://eclipse.org>
            <mailto:eclipselink-users@__eclipse.org
            <mailto:eclipselink-users@xxxxxxxxxxx>>>
            https://dev.eclipse.org/______mailman/listinfo/eclipselink-______users
            <https://dev.eclipse.org/____mailman/listinfo/eclipselink-____users>
            <https://dev.eclipse.org/____mailman/listinfo/eclipselink-____users
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users>>


            <https://dev.eclipse.org/____mailman/listinfo/eclipselink-____users
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users>
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users
            <https://dev.eclipse.org/mailman/listinfo/eclipselink-users>>>





                    ___________________________________________________
                    eclipselink-users mailing list
            eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
            <mailto:eclipselink-users@__eclipse.org
            <mailto:eclipselink-users@xxxxxxxxxxx>>
            https://dev.eclipse.org/____mailman/listinfo/eclipselink-____users
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users>
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users
            <https://dev.eclipse.org/mailman/listinfo/eclipselink-users>>

                ___________________________________________________
                eclipselink-users mailing list
            eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
            <mailto:eclipselink-users@__eclipse.org
            <mailto:eclipselink-users@xxxxxxxxxxx>>
            https://dev.eclipse.org/____mailman/listinfo/eclipselink-____users
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users>
            <https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users
            <https://dev.eclipse.org/mailman/listinfo/eclipselink-users>>




            _________________________________________________
            eclipselink-users mailing list
            eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
            https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users
            <https://dev.eclipse.org/mailman/listinfo/eclipselink-users>

        _________________________________________________
        eclipselink-users mailing list
        eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
        https://dev.eclipse.org/__mailman/listinfo/eclipselink-__users
        <https://dev.eclipse.org/mailman/listinfo/eclipselink-users>





_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


Back to the top