Ormlite - 更改外键列的名称

时间:2014-08-23 21:42:30

标签: ormlite

是否可以在OrmLite中指定外键的名称?

我有两张桌子

public class Order extends BaseData
{

    @DatabaseField(id = true)
    private Long order_ID;


    ...

    @ForeignCollectionField(eager = true, maxEagerForeignCollectionLevel = 2)
    private ForeignCollection<Vehicle> vehicleList;
}


public class Vehicle extends BaseData
{
   @DatabaseField(id = true)
    private long vehicle_ID;


   ...

   @DatabaseField(canBeNull = false, foreign = true)
   private Order order;

}

我真正想要做的是在我的Vehicle类的定义中包含order_id,然后指定ormlite使用此order_id作为外键字段。

我试过以下内容:

public class Vehicle extends BaseData
{
   @DatabaseField(id = true)
    private long vehicle_ID;

    @DatabaseField
    private long order_ID;

   @DatabaseField(canBeNull = false, foreign = true, columnName = "order_ID")
   private Order order;

}

但是,这会在创建数据库时提供有关重复列的错误消息。

1 个答案:

答案 0 :(得分:1)

这个问题看起来像我以前的回答:In ormlite, How can I have a foriegn field and a field column?

由于您创建了两个具有相同名称的表,因此会出现错误。

您不应该将id存储在数据库中并放置一个setter。如果您将id存储在数据库中,您将拥有重复的信息。只需执行:

public class Vehicle extends BaseData
{
   @DatabaseField(id = true)
    private long vehicle_ID;

    private long order_ID;

   @DatabaseField(canBeNull = false, foreign = true, columnName = "order_ID")
   private Order order;

   public void setOrder(Order order){
        this.order=order;
        order_ID = order.getId();
   }
}