[英]Getting foreign key member “null” in ActiveAndroid
我正在我的Android应用程序中实现ActiveAndroid,因为我指的是这个链接 。 我的问题定义是,我在改装库的帮助下从服务器获取数据列表。 获取数据列表后,我将数据插入“ActiveAndroid”数据库。 在调试我的应用程序时,我检查过,外键和模型类的其他数据成员的数据是正确的,但是当我试图从“ActiveAndroid”获取数据时, 我得到外键null 。 我google了很多但却无法追踪问题。 欲了解更多信息,请查看以下详情 -
目前我有以下模型类 - 1] Event.java类
@Table(name = "Events")
public class Event extends Model
{
@Column(name = "eventID")
private int eventID;
@Column(name = "eventName")
private String eventName;
@Column(name = "Ground")
private Ground ground;
public Event() {
super();
// TODO Auto-generated constructor stub
}
public Event(int eventID, String eventName,
Ground ground) {
super();
this.eventID = eventID;
this.eventName = eventName;
this.ground = ground;
}
public int getEventID() {
return eventID;
}
public void setEventID(int eventID) {
this.eventID = eventID;
}
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
public Ground getGround() {
return ground;
}
public void setGround(Ground ground) {
this.ground = ground;
}
}
如上面的“事件”模型类所示,有一个外键即“地面”。
2] Ground.java类是 -
Table(name = "Ground")
public class Ground extends Model
{
@Column(name = "groundID")
private int groundID;
@Column(name = "groundName")
private String groundName;
public Ground() {
super();
// TODO Auto-generated constructor stub
}
public int getGroundID() {
return groundID;
}
public void setGroundID(int groundID) {
this.groundID = groundID;
}
public String getGroundName() {
return groundName;
}
public void setGroundName(String groundName) {
this.groundName = groundName;
}
public Ground(int groundID, String groundName)
{
super();
this.groundID = groundID;
this.groundName = groundName;
}
}
3]这就是我在“ActiveAndroid DB”中存储事件的方式
ActiveAndroid.beginTransaction();
try
{
for (int i = 0; i < list.size(); i++)
{
list.get(i).save();
/*
Also tried---
list.get(i).getGround.save();
list.get(i).save();
*/
}
ActiveAndroid.setTransactionSuccessful();
}
finally
{
ActiveAndroid.endTransaction();
}
4]这就是我从“ActiveAndroid”DB获取事件列表的方法
public static List<Event> getAllEvents()
{
return new Select()
.all()
.from(Event.class)
.execute();
}
但是从“ActiveAndroid”获取列表后, 我将“Ground”字段视为null。 请指导我出错的地方,如果我能提供更多信息,请告诉我,以便您轻松了解我的问题。 谢谢。!
请尝试以下代码,它可能会帮助您。
@Table(name = "Events")
public class Event extends Model {
@Column(name = "eventID")
private int eventID;
@Column(name = "eventName")
private String eventName;
@Column(name = "Ground", onUpdate = Column.ForeignKeyAction.CASCADE, onDelete = Column.ForeignKeyAction.CASCADE)
private Ground ground;
public Event() {
super();
// TODO Auto-generated constructor stub
}
public Event(int eventID, String eventName,
Ground ground) {
super();
this.eventID = eventID;
this.eventName = eventName;
this.ground = ground;
}
public int getEventID() {
return eventID;
}
public void setEventID(int eventID) {
this.eventID = eventID;
}
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
public Ground getGround() {
return getMany(Ground.class, "Ground");//or/*new Select().from(Ground.class).execute();*/
}
public void setGround(Ground ground) {
this.ground = ground;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.