B4J Question jRDC2: ConvertObjectToBytes() cannot serialize UUId value from PostgreSQL

Discussion in 'B4J Questions' started by Diceman, Dec 11, 2018.

  1. Diceman

    Diceman Active Member Licensed User

    I am using B4j v6.51 and jRDC2 server with PostgreSQL. When I have an sql statement like "Select * from MyTable" and one of the columns is a UUID column the statement:

    Dim data() As Byte = ser.ConvertObjectToBytes(res)​

    will throw an exception:
    Code:
    java.lang.RuntimeException: java.lang.RuntimeException: Cannot serialize object: de5cb930-168d-441f-9703-c71f57a4ee4c
        at anywheresoftware.b4a.randomaccessfile.B4XSerializator.writeType(B4XSerializator.java:
    268)
        at anywheresoftware.b4a.randomaccessfile.B4XSerializator.writeObject(B4XSerializator.java:
    224)
        at anywheresoftware.b4a.randomaccessfile.B4XSerializator.WriteObject(B4XSerializator.java:
    104)
        at anywheresoftware.b4a.randomaccessfile.B4XSerializator.ConvertObjectToBytes(B4XSerializator.java:
    62)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
    62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
    43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:
    564)
        at anywheresoftware.b4a.shell.Shell.runMethod(
    Shell.java:628)
        at anywheresoftware.b4a.shell.Shell.raiseEventImpl(
    Shell.java:234)
        at anywheresoftware.b4a.shell.Shell.raiseEvent(
    Shell.java:168)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
    62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
    43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:
    564)
        at anywheresoftware.b4a.BA.raiseEvent2(BA.java:
    90)
        at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:
    98)
        at anywheresoftware.b4a.BA.raiseEvent(BA.java:
    77)
    The method ser.ConvertObjectToBytes does not know how to serialize the UUID column. Is this something that can be fixed? For the time being I will rewrite the SQL statements to exclude any UUID column.

    TIA
     
  2. Erel

    Erel Administrator Staff Member Licensed User

    Diceman and DonManfred like this.
  3. Diceman

    Diceman Active Member Licensed User

    I will create a view of the table and use your concat() suggestion to pass back the UUID back to the user. I think it will be a good idea to always use views when returning data back to the user rather than putting the individual column names in a select statement in the config.properties text file. Config.Properties will simply have the "select * from viewx" and the intelligence and column list will be in the view definition which can also join tables together. This will make for a cleaner Config.Properties file. :D Thanks again for the solution.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice