Unser Projekt muss sowohl Oracle als auch Postgres Dbs unterstützen. Und möglicherweise werden dieser Liste weitere Datenbanken hinzugefügt. Also benötigen Sie eine DB-agnostische Hibernate-Konfiguration für BLOB- und CLOB-Datentypen.Hibernate-Konfiguration für BLOB und CLOB zur Unterstützung von Oracle und Postgres
Während Oracle arbeitet mit fein:
@Lob
@Column(name="column1")
private String str;
@Lob
@Column(name="column2")
private byte[] bytea;
Postgres begann mit dem gleichen beschweren.
org.springframework.orm.hibernate4.HibernateJdbcException: JDBC Ausnahme auf den Ruhezustand den Datenzugriff: SQLException für SQL [(?,?,?,) Einfügen in TABLE_NAME (TABLE_TYPE, TABLE_ID, TABLE_CONTENT_BIN, TABLE_CONTENT_CHAR) -Werte] ; SQL-Status [0A000]; Fehlercode [0]; konnte nicht einfügen: [com.project.EntityClass]; verschachtelte Ausnahme ist org.hibernate.exception.GenericJDBCException: konnte Folgendes nicht einfügen: [com.project.EntityClass]] verursacht durch: org.hibernate.exception.GenericJDBCException: konnte Folgendes nicht einfügen: [com.project.EntityClass] at org. hibernate.exception.internal.StandardSQLExceptionConverter.convert (StandardSQLExceptionConverter.java:54) bei org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert (SqlExceptionHelper.java:126) bei org.hibernate.persister.entity.AbstractEntityPersister. insert (AbstractEntityPersister.java:3144) bei org.hibernate.persister.entity.AbstractEntityPersister.insert (AbstractEntityPersister.java:3581) bei org.hibernate.action.internal.EntityInsertAction.execute (EntityInsertAction.java:104) bei org.hibernate.engine.spi.ActionQueue.executeActions (ActionQueue. Java: 465) bei org.hibernate.engine.spi.ActionQueue.executeActions (ActionQueue.java:351) bei org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions (AbstractFlushingEventListener.java:350) bei org.hibernate. event.internal.DefaultFlushEventListener.onFlush (DefaultFlushEventListener.java:56) bei org.hibernate.internal.SessionImpl.flush (SessionImpl.java:1258) bei org.springframework.orm.hibernate4.SpringSessionSynchronization.beforeCommit (SpringSessionSynchronization.java: 104) ... 40 mehr verursacht durch: java.sql.SQLFeatureNotSupportedException: Methode org.postgresql.jdbc4.Jdbc4PreparedStatement.setCharacterStream (int, Reader, long) ist noch nicht implementiert. bei org.postgresql.Driver.notImplemented (Driver.java:670) bei org.postgresql.jdbc4.AbstractJdbc4Statement.setCharacterStream (AbstractJdbc4Statement.java:116) bei 1 org.hibernate.type.descriptor.sql.ClobTypeDescriptor 4 $ $. doBind (ClobTypeDescriptor.java:124) bei org.hibernate.type.descriptor.sql.BasicBinder.bind (BasicBinder.java:90) bei org.hibernate.type.AbstractStandardBasicType.nullSafeSet (AbstractStandardBasicType.java:286) bei org.hibernate.type.AbstractStandardBasicType.nullSafeSet (AbstractStandardBasicType.java:281) bei org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet (AbstractSingleColumnStandardBasicType.java:56) bei org.hibernate.persister.entity.AbstractEntityPersister.dehydrate (AbstractEntityPersister. Java: 2 857) bei org.hibernate.persister.entity.AbstractEntityPersister.insert (AbstractEntityPersister.java:3121) ... 48 weitere
Recherchiert und fanden heraus, dass Menschen mit @Type(type = "org.hibernate.type.StringClobType")
und @Type(type = "org.hibernate.type.BinaryType")
mit Anmerkungen versehen sind darauf hindeutet. Beides sind Hibernate Annotations. Wir beabsichtigen jedoch, JPA-Annotationen zu verwenden, und dies würde zur Laufzeit Hibernate benötigen, was mir unnötig erscheint.
Also meine Frage ist, ob es eine Möglichkeit gibt, BLOBs und CLOBs in einer sehr generischen Art und Weise zu behandeln, die uns keine Verzweigungen für verschiedene DBs erfordern würde und ohne Hibernate spezifische Annotationen hinzuzufügen. Außerdem verwenden wir den Ruhezustand nicht für die Tabellenerstellung.
Postgres version- 9,4-1201-jdbc41
Oracle Version - 12.1.0.1
Hibernate Version -4.3.10.Final
Mit anderen JPA-Anbietern tun Sie, wie Sie dort haben. Vielleicht, wenn Sie sagen, dass etwas "sich beschweren", vielleicht besser zu erwähnen, was Nachricht + Stack-Trace –
@NeilStockton: Nachricht und Stack-Trace hinzugefügt. Bitte helfen Sie –