У меня есть сериализованный объект, который необходимо преобразовать в объект «blob» и сохранить в базе данных. Раньше мы использовали для хранения объекта, который был определен другими объектами проекта, но выполняли правила сериализации, из-за которых он сталкивался с многочисленными проблемами, поэтому мы решили изменить объект структуры blob, который теперь содержит только примитивные объекты (String, boolean, Integer и т. д.). До сих пор мы могли заставить весь атрибут ожидать два.Проблема в преобразовании объекта в объект Blob
private byte[] encode(ScheduledReport schedSTDReport)
{
byte[] bytes = null;
try
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(schedSTDReport);
oos.flush();
oos.close();
bos.close();
//byte [] data = bos.toByteArray();
//ByteArrayOutputStream baos = new ByteArrayOutputStream();
//GZIPOutputStream out = new GZIPOutputStream(baos);
//XMLEncoder encoder = new XMLEncoder(out);
//encoder.writeObject(schedSTDReport);
//encoder.close();
bytes = bos.toByteArray();
//GZIPOutputStream out = new GZIPOutputStream(bos);
//out.write(bytes);
//bytes = bos.toByteArray();
}
выше пишут блоб Blob содержит
public class ScheduledReport extends ScheduledReportInfo implements Serializable {
private SupervisoryScope _scope = null;
private Report _attributes = null;
private ScheduledReportScheduleBase _schedule = null;
private HashMap selectionList = new HashMap();
private EmailInfo _emailInfo = null;
private String _pdfFileName = null;
private short _baseDateOffset = -1;
В объекте отчета существует follwoing атрибута
private String deflt = null;
private Object guiValue = null;
protected Object serverValue = null;
изменяемый объект может быть любой, как список массива, строка, логическим или объект класса. Но как только декодировать на фактический объект, ему нужно ввести cast в любой тип, который он есть. Наша цель - преобразовать этот объект в любой примитивный тип и сохранить и возвращать обратно в качестве исходного значения. По существу мы думали, что каждый объект как строка с типом объекта присоединяется к нему подобно «1_integer», «Y_Boolean» и преобразуется в blob и при возобновлении разделительной строки и использует эту строку как часть отражения, чтобы получить тип объекта для кастинга. Но это нецелесообразное или правильное решение. Есть идеи.