FloatArrayConverter.java
package com.taxonomy.shared.model;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import jakarta.persistence.AttributeConverter;
import jakarta.persistence.Converter;
@Converter
public class FloatArrayConverter implements AttributeConverter<float[], byte[]> {
@Override
public byte[] convertToDatabaseColumn(float[] attribute) {
if (attribute == null) return null;
ByteBuffer buffer = ByteBuffer.allocate(attribute.length * Float.BYTES)
.order(ByteOrder.LITTLE_ENDIAN);
for (float f : attribute) {
buffer.putFloat(f);
}
return buffer.array();
}
@Override
public float[] convertToEntityAttribute(byte[] dbData) {
if (dbData == null) return null;
ByteBuffer buffer = ByteBuffer.wrap(dbData).order(ByteOrder.LITTLE_ENDIAN);
float[] result = new float[dbData.length / Float.BYTES];
for (int i = 0; i < result.length; i++) {
result[i] = buffer.getFloat();
}
return result;
}
}