简体   繁体   中英

Hibernate with long text column with Oracle and PostgreSQL

I'm trying make an entity work with Oracle (11.2) and PostgreSQL(9.4) in a Spring Boot (1.4.4) application.

My entity contains a long text field (over 4000 characters). The appropriate data type in Oracle is CLOB and the corresponding type in PostgreSQL is TEXT.

I'm able to make it work with PostgreSQL

@Column(name = "LONG_TEXT", columnDefinition="TEXT")
private String longText;

However it would fail with Oracle in hibernate validation stage since CLOB requires @Lob annotation.

The following code works with Oracle

@Lob
@Column(name = "LONG_TEXT")
private String longText;

However this time it fails when reading from PostgreSQL with the following exception:

PSQLException: Large Objects may not be used in auto-commit mode

Stack overflow suggests performing queries in transactions. Disregarding questionable requirement to invoke transaction in select queries, adding @Transactional to query methods didn't help.

Any thoughts are more than welcomed.

The solution we came to is to adopt the @Lob and @Transactional approach.

The main issue was with the placement of the @Transactional annotation, causing the PSQLException. Once fixed, we were able to work with both types of DBs.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM