programing

olingo v2에서 BLOB와 CLOB를 어떻게 처리합니까?

abcjava 2023. 8. 29. 20:05
반응형

olingo v2에서 BLOB와 CLOB를 어떻게 처리합니까?

여기 olingo jpa에서 BLOB와 CLOB를 처리하는 방법에 대한 의사 코드가 있습니다.필요한 가져오기를 의사 코드에 추가했습니다.

package me;

import java.sql.Blob;
import java.sql.Clob;
import java.sql.SQLException;

import javax.sql.rowset.serial.SerialException;

import org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;

public class OnDBWriteContent implements OnJPAWriteContent {

    @Override
    public Blob getJPABlob(byte[] binaryData) throws ODataJPARuntimeException {
        try {
            return new JDBCBlob(binaryData);
        } catch (SerialException e) {
            ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
        } catch (SQLException e) {
            ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
        }
        return null;
    }

    @Override
    public Clob getJPAClob(char[] characterData) throws ODataJPARuntimeException {
        try {
            return new JDBCClob(new String(characterData));
        } catch (SQLException e) {
            ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
        }
        return null;
    }
}

유일한 문제는 제가 어떤 구현도 찾을 수 없었다는 것입니다.JDBCBlob그리고.JDBCClob어떻게 구현하거나 일부 수업을 사용할 수 있는지에 대한 제안이 있습니까?

MySQL을 사용하는 경우 추가 정보가 필요합니다.ExceptionInterceptorBlob 구현과 함께.의 사용자 정의 구현이 가능합니다.ExceptionInterceptorBlob 필드를 초기화하는 데 사용합니다.

이를 달성하기 위한 코드는 다음과 같습니다.

import java.sql.Blob;
import java.sql.Clob;
import java.util.Properties;

import org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;

import com.mysql.cj.exceptions.ExceptionInterceptor;
import com.mysql.cj.log.Log;

public class CustomOnJPAWriteContent implements OnJPAWriteContent {

    @Override
    public Blob getJPABlob(byte[] binaryData) throws ODataJPARuntimeException {
        return new com.mysql.cj.jdbc.Blob(binaryData, exceptionInterceptor);
    }

    @Override
    public Clob getJPAClob(char[] characterData) throws ODataJPARuntimeException {
        
        return new com.mysql.cj.jdbc.Clob(new String(characterData), exceptionInterceptor);

    }

    ExceptionInterceptor exceptionInterceptor = new ExceptionInterceptor() {

        @Override
        public Exception interceptException(Exception sqlEx) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public ExceptionInterceptor init(Properties props, Log log) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public void destroy() {
            // TODO Auto-generated method stub

        }
    };

}

언급URL : https://stackoverflow.com/questions/62813234/how-to-handle-blob-and-clob-in-olingo-v2

반응형