2

我得到了以下要使用 Ormlite 保存在数据库中的类:

public class Quantity {
    private int normalisedAmount; 
    private String unit;
    ....
}

public class Article {
    private String name;  
    private Quantity q;
    ....
}

问题是数量和文章之间存在一对一的关系。使用 Ormlite 的一种方法是使 q 像这样:

@DatabaseField(foreign = true)
private Quantity q;

缺点是数据库不会被规范化

另一种解决方案是通过创建 Persister 来制作自定义数据类型。问题是您要么必须序列化 Quantity 对象,要么将文件“name”和“q”放入同一个 DB 列。他们都不好看。

如何制作漂亮的独奏曲?

4

2 回答 2

2

要获得一对一的关系,您可以对字段进行unique约束。q我没有尝试过,但它应该将q.name字段的行数限制为 1。

创建一个Quantity表(我相信)其他 ORM 是如何做到的。我不认为这违反了数据库“规范化”。您的Article表中有一个字段,它代表 id Quantity- 不确定 id 字段是什么。来自的所有其余字段Quantity都将在另一个表中。

另一种方法是嵌入QuantityORMLite不支持的Article内容。

于 2013-02-01T15:39:15.147 回答
0

我最终让 Quantity 对象混合到文章中并添加了一个 getQuantity 方法。现在数据库中没有一对一的关系。

public class Article {
    private String name;  
    // Quantity
    private int normalisedAmount; 
    private String unit;
    ....

    Quantity getQuantity() {
         return new Quantity(normalisedAmount, unit);
    }
}
于 2013-02-19T20:36:47.057 回答