Мне нужно сохранить мой список с несколькими каналами и их временными метками в моей базе данных, но я до сих пор не нашел способа сделать это.Я попробовал это с сериализацией и созданием строки JSON, но оба пути не увенчались успехом.Как бы вы сохранили такой список в спящем режиме?
РЕДАКТИРОВАТЬ: это часть кода, где я пытаюсь сохранить список, сохраняя каждый канал.Прямо сейчас я сохраняю их как байт [], но это не работает.Когда я пытаюсь десериализовать байт [], я не получаю свой список.Я также попытался сохранить их как long [] и набрать столбцы как bigint [], но это тоже не сработало.
@Entity
public class RecordingEntity implements Serializable
{
private static final long serialVersionUID = 1L;
@Column(name = "channel_one")
private byte[] channelOneAsByteArray;
@Column(name = "channel_two")
private byte[] channelTwoAsByteArray;
@Column(name = "channel_three")
private byte[] channelThreeAsByteArray;
...
public RecordingEntity(List<Long[]> recordingList, File rawFile, Recording recording)
{
this.recording = recording;
ObjectMapper mapper = new ObjectMapper();
try
{
rawFileAsByteArray = mapper.writeValueAsBytes(rawFile);
}
catch (JsonProcessingException e)
{
LOGGER.error(e.getMessage(), e);
}
setRecordingList(recordingList);
}
...
public List<Long[]> getRecordingList()
{
List<Trigger[]> recordingList = new ArrayList<>();
int channels = recording.getChannels();
Long[] channelOne = (Long[]) SerializationUtils.deserialize(channelOneAsByteArray);
Long[] channelTwo = (Long[]) SerializationUtils.deserialize(channelTwoAsByteArray);
Long[] channelThree = (Long[]) SerializationUtils.deserialize(channelThreeAsByteArray);
for (int i = 0; i < channelOneAsByteArray.length; i++)
{
Long[] positionArray = new Long[channels];
if (0 < channels)
{
positionArray[0] = channelOne[I];
}
if (1 < channels)
{
positionArray[1] = channelTwo[I];
}
if (2 < channels)
{
positionArray[2] = channelThree[I];
}
recordingList.add(positionArray);
}
return recordingList;
}
...
public void setRecordingList(List<Long[]> recordingList)
{
int channels = recording.getChannels();
long[] channelOne = new long[recordingList.size()];
long[] channelTwo = new long[recordingList.size()];
long[] channelThree = new long[recordingList.size()];
for (Long[] positionArray : recordingList)
{
int index = 0;
if (0 < channels)
{
channelOne[index] = positionArray[0];
}
if (1 < channels)
{
channelTwo[index] = positionArray[1];
}
if (2 < channels)
{
channelThree[index] = positionArray[2];
}
index++;
}
channelOneAsByteArray = SerializationUtils.serialize(channelOne);
channelTwoAsByteArray = SerializationUtils.serialize(channelTwo);
channelThreeAsByteArray = SerializationUtils.serialize(channelThree);
}
}