Reading blob object from postgres DB through JPA gives null value - postgresql

In my application, I am using JPA to interact with database.
I have a blob column defined in entity class as:
#Lob
#Type(type="org.hibernate.type.BinaryType")
#Column(name = "FILECONTENT", columnDefinition="BYTEA")
private byte[] fileContent;
I am able to write to the database fine and did validate it through encode function
select encode(filecontent, 'hex') from ftsmailbox
HOwever when i read the this table, i can see that the filecontent column's value comes as null.
When i changed the DB connection to Oracle DB, i do see the values coming in from DB just fine and not null, but when reading from postgres i get null for blob columns.
postgres version i am using is 15
application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=<password>
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL81Dialect

Related

UUID instead of GUID (Oracle to Postgres)

Is there any chance to have duplicate hexadecimal value while migrating oracle to Postgres (guid to UUID)
I have a table having column which is generate 32 character hexadecimal value by using sys_guid function (default oracle sys object). Now I want to migrate Oracle to Postgres but guid is not supported by Postgres but it has UUID instead of guid. Just want to confirm that whether there will be any chance to have duplicate value after migrating oracle to Postgres
GUID is a synonym for UUID.
The UUIDs generated by Oracle can be stored without problems in a column defined as uuid in Postgres.
Postgres provides gen_random_uuid() that will generate a V4 UUID.

Ora2PG REPLACE_AS_BOOLEAN property and exclude one column by replacing

I'm using ora2pg to import an oracle db schema into a postgresql db schema. I configured all in the correct way and I'm able to dump the oracle dn into the postgresql db.
In the schema that I'm converting I have some columns number(1,0) that I need to convert as boolean in the pg schema.
At first I used this configuration
REPLACE_AS_BOOLEAN NUMBER:1
so every column with this type will be conmverted as boolean in the pg db.
The problem is that I have a column in the oracle schema defined as number(1,0). This column has to remain numeric and maintain the same type on the pg schema, so it hasn't to be converted as boolean.
This means that i changed the property in this manner
REPLACE_AS_BOOLEAN TABLE1:COLUMN1 TABLE2:COLUMN2 TABLE3:COLUMN3
I have a lot of columns that they have to be converted as boolean and the definition of this property became very long.
Is there a method to define the REPLACE_AS_BOOLEAN property to replace all the column with type number(1,0), but with some exception for one or some of them?
I had to wrote the property with the list of all the tables name and columns name

JPA, Postgresql: Is there any performance difference between oid and TEXT?

I'm using JPA with a postgresql database and also using Hibernates hbm2ddl to generate the initial DB schema.
I have a Java String field in my entity object that will need to be large. When I annotate it with #Lob hbm2ddl generates an oid db column, however I can also use #Column(columnDefinition = "TEXT") to get a TEXT db column.
I've tried searching the internet but I can't find any comparison between the performance or other benefits of oid's vs TEXT columns. Is there any reason to prefer one over the other?

Postgres not converting from a java boolean to numeric data column automatically?

I have an Oracle database that is currently being migrated to an AWS Aurora Postgres database. As part of this I have had to update some of the datatypes in our sql files for creating tables e.g. changing NUMBER to NUMERIC etc. It has been going well but I am now coming across the following error when trying to insert some data into a table using spring data/JPA
ERROR: column "some_table_column" is of type numeric but expression is of type boolean
I can identify the issue is probably that the java class defines this column like
#Column(name = "SOME_TABLE_COLUMN", nullable = false)
private boolean someTableColumn;
while the sql file defines it like
CREATE TABLE MY_TABLE
(
SOME_TABLE_COLUMN NUMERIC(1) DEFAULT 0 NOT NULL,
etc..
Don't ask why it has been defined like this, I didn't write this code, I've just inherited it. But this has not been an issue ever with the Oracle database, and I'm only seeing the error now when running against Postgres. Does Oracle do some sort of implict conversion behind the scene that Postgres doesn't do? Is there a way I can resolve this without having to migrate the column to a boolean datatype?

Azure Data Factory -> Copy from SQL to Table Storage (boolean mapping)

I am adding pipeline in Azure Data factory to migrate data from SQL to Table storage.
All seems working fine, however i observed that bit column is not getting copies as expected.
I have a filed "IsMinor" in SQL DB.
If i don't add explicit mapping for bit column as is then, it is copied as null
If i set it as 'True' Or 'False' from SQL, it is copied as String instead of Boolean in TableStorage.
I also tried to specify type while mapping the field i.e. "IsMinor (Boolean)", however it didn't worked as well.
Following is my sample table
I want the bit value above to be copied as "Boolean" in Table storage instead of String.
I tried copy the boolean data from my SQL database to table Storage, it works.
As you know, SQL server does't support boolean data type, so I create table like this:
All the data preview look well in Source dataset:
I just create a table test1 in Table storage, let the data factory create the PartitionKey and RowKey automatically.
Run the pipeline and check the data in test1 with Storage Explorer:
From the document Understanding the Table service data model, Table storage do support Boolean property types.
Hope this help.