Android 앱에 ActiveAndroid를 구현하고 있습니다. 그 이유는 this link입니다. 내 문제 정의는, 내가 retrofit 라이브러리의 도움으로 서버에서 데이터 목록을 받고 있어요. 데이터 목록을 가져온 후 내 "ActiveAndroid"DB에 데이터를 삽입하고 있습니다. 내 응용 프로그램을 디버깅하는 동안 외래 키 및 모델 클래스의 다른 데이터 멤버에 대한 데이터가 올바른지 확인했지만 "ActiveAndroid"에서 데이터를 다시 가져 오려고 할 때 외래 키 null이 발생했습니다. 내가 많이 봤지만 아직 문제를 추적 할 수 없습니다. 1] Event.java 클래스는 위의 "이벤트"모델 클래스에 나타낸 바와 같이ActiveAndroid에서 외래 키 멤버 "null"가져 오기
@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;
}
}
, 하나가 classes-- 자세한 내용은 현재 내가 모델 다음 한 details--
아래에서 확인하세요 외래 키 즉 "Ground".
2] Ground.java 클래스 is--
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로 표시됩니다. 제게 잘못되어 가고있는 곳으로 안내해주십시오. 제 문제를 쉽게 이해할 수 있도록 더 많은 정보를 제공해 줄 수 있는지 알려 주시기 바랍니다. 고맙습니다.!