2016-10-18 4 views
0

Таким образом, он не будет вставлять данные в таблицу Задача, у которой есть внешний ключ пользователя.Не помещайте данные в таблицу с одним или несколькими действиями в ORMLite

Это Задача Класс:

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!!!"); 
} 

ошибка происходит:

Вызванный: java.sql.SQLException: вставив в базу данных не удалось: (???,,) INSERT INTO task (description, user_id, title, done) VALUES

Я новичок на Android, особенно на ORMLite, поэтому, пожалуйста, помогите.

ответ

0

Хорошо, поэтому я узнал, в чем проблема. Поскольку я изменил таблицу задач в классе Task, вам необходимо было воссоздать базу данных, чтобы зафиксировать изменения. Так что я сделал, это удалить мою базу данных, а затем создать ее снова. Теперь он работает.

 Смежные вопросы

  • Нет связанных вопросов^_^