是否可以在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;
}
但是,这会在创建数据库时提供有关重复列的错误消息。
答案 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();
}
}