我有以下课程:
@DatabaseTable
public class BodyWeight implements Serializable {
@DatabaseField(generatedId = true, useGetSet = true, columnName = "id")
private Long id;
@DatabaseField
private String name;
@DatabaseField
private double goal;
@DatabaseField
private String primaryunit;
@DatabaseField
private String secondaryunit;
@DatabaseField
private int secondarysize;
@DatabaseField
private Collection<Collection<Double>> data;
如何向数据库添加双精度基元列表?这个过程是什么?我应该为双打列表列表创建更多类吗?
答案 0 :(得分:1)
一种可能的方法是将Collection<Collection<Double>> data
保留在您的类中,并使用自定义persister将其作为JSON字符串存储在数据库中。喜欢这个
@DatabaseField(persisterClass = MyCustomPersister.class)
Collection<Collection<Double>> data;
MyCustomPersister应该实现com.j256.ormlite.field.DataPersister
或其中一个可用的实现。基本上只有两种方法:
@Override
public Object resultToSqlArg();
@Override
public Object sqlArgToJava();
答案 1 :(得分:0)
如何向数据库添加双精度基元列表?这个过程是什么?
这非常复杂。一种方法是使类型可序列化。
@DatabaseField(dataType = DataType.SERIALIZABLE)
private Collection<Collection<Double>> data;
与@ unnamed_b的答案一样,它将把它作为一个序列化的字节块存储到位。如果你有大量的双打,这将不会起作用。
如果要将其作为对象存储在另一个表中,则必须定义这些对象。类似的东西:
@DatabaseField(generatedId = true)
private long id;
@ForeignCollectionField
private Collection<DoubleCollection> data;
ORMLite只处理直接集合,因此我们需要定义子集合:
@DatabaseTable
public class DoubleCollection {
@DatabaseField(generatedId = true)
private long id;
@ForeignCollectionField
private Collection<DoubleWrapper> data;
}
如果你需要存储一组双打,那么你需要定义一个包装来保存一个id和你的双值。
@DatabaseTable
public class DoubleWrapper {
@DatabaseField(generatedId = true)
private long id;
@DatabaseField
private double value;
}