2016-10-18 2 views
0

테이블에 데이터를 삽입하지 마십시오. 외래 키 사용자 인 작업에 데이터가 삽입되지 않습니다.OR32ite에서 1 : 다수 realtionship이있는 테이블에 데이터를 삽입하지 마십시오.

이 클래스 작업입니다 :

package com.example.gencode.execomtodolist.model; 

import com.j256.ormlite.field.DatabaseField; 
import com.j256.ormlite.table.DatabaseTable; 


@DatabaseTable 
public class Task{ 

@DatabaseField(generatedId = true) 
private Long id; 

@DatabaseField 
private String title; 

@DatabaseField 
private String description; 

@DatabaseField 
private boolean done; 

@DatabaseField (foreign = true, foreignAutoRefresh = true) 
private User user; 

public Task(){ 

} 

public Task(User user, String title, String description, boolean done) { 
    this.user = user; 
    this.title = title; 
    this.description = description; 
    this.done = done; 
} 

@Override 
public String toString() { 
    return " " + title; 
} 

public Long getId() { 
    return id; 
} 

public String getTitle() { 
    return title; 
} 

public String getDescription() { 
    return description; 
} 

public User getUser() { return user; } 

public void setUser(User user) { this.user = user; } 

public boolean isDone() { return done; } 
} 

그리고 이것은 사용자 클래스 :

package com.example.gencode.execomtodolist.model; 

import com.j256.ormlite.dao.ForeignCollection; 
import com.j256.ormlite.field.DatabaseField; 
import com.j256.ormlite.field.ForeignCollectionField; 
import com.j256.ormlite.table.DatabaseTable; 
import java.util.Collection; 

@DatabaseTable 
public class User{ 

@DatabaseField(generatedId = true) 
private Long id; 

@DatabaseField 
private String username; 

@DatabaseField 
private String password; 

@ForeignCollectionField 
private ForeignCollection<Task> userTasks; 

public User(){ 

} 

public User(String username, String password) { 
    this.username = username; 
    this.password = password; 
} 

@Override 
public String toString() { 
    return " " + username + " " + password; 
} 

public String getUsername() { 
    return username; 
} 

public Long getId() { 
    return id; 
} 

public String getPassword() { 
    return password; 
} 

public Collection<Task> getUserTasks() { return userTasks; } 

} 

그리고 내가하려고 할 때이 :

private void insertUsers(){ 
    User user1 = new User("Djavo", "666"); 
    User user2 = new User("Martel", "123"); 

    userDao.create(user1); 
    userDao.create(user2); 

    Task task1 = new Task(user1, "naslov1", "opis232", false); 
    Task task2 = new Task(user1, "naslov2", "opis3232", false); 

    taskDao.create(task1); 
    taskDao.create(task2); 

    Log.d("ORMLITEDEMO", "User1 and User2 and Task1 and Task2 CREATED!!!"); 
} 

오류가 발생합니다

012 3,516,

에 의해 발생 : java.sql.SQLException의 : 데이터베이스에 삽입 실패 : (?,?,?,?) INTO INSERT task (description, user_id, title, done) 가치

나는 오전 안드로이드에서 초보자, 특히 ORMLite에서 그러니 제발 도와주세요.

답변

0

좋아, 그래서 내가 무슨 문제인지 알았어. Task 클래스의 Task 테이블을 변경 했으므로 변경 내용을 커밋하기 위해 데이터베이스를 다시 만들어야했습니다. 그래서 내가 한 것은 내 데이터베이스를 삭제 한 다음 다시 만들었습니다. 이제 작동합니다.

관련 문제