постоянный списокв спящем режиме - PullRequest
0 голосов
/ 13 июня 2018

Мне нужно сохранить мой список с несколькими каналами и их временными метками в моей базе данных, но я до сих пор не нашел способа сделать это.Я попробовал это с сериализацией и созданием строки 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);
    }
}

1 Ответ

0 голосов
/ 13 июня 2018

Вы должны сделать это только с пакетной вставкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...