Неодатис и дубликаты - PullRequest
0 голосов
/ 06 февраля 2019

Neodatis создают новый "Pais", когда есть равный.

Я работаю с Neodatis в графическом интерфейсе.У меня есть база данных, которая содержит «Jugadores» и «Pais».«Jugadores» имеют атрибут «Pais».Когда я хочу добавить новый «Jugadores» в базу данных с одним из существующих «Pais», воссоздайте его в базе данных, так как запрос не возвращает, что существует один с таким же именем.

GUIкод:

gestionLiga gestionLiga = new gestionLiga();

gestionLiga.altaJugador(txtNombre.getText(), txtDeporte.getText(), txtCiudad.getText(), Integer.parseInt(txtEdad.getText()), gestionLiga.sacarPais(txtPais.getText()));

gestionLiga.sacarPais код:

public Pais sacarPais(String pais)
    {
    odb = ODBFactory.open("EQUIPOS.test");
    IQuery query = new CriteriaQuery(Pais.class, Where.equal("nombre",pais));   
    Objects <Pais> listado = odb.getObjects(query);
    if(listado.size() == 0)
    {
        int contador;
        IQuery query2 = new CriteriaQuery(Pais.class);
        Objects <Pais> listado2 = odb.getObjects(query2);
        contador = listado2.size()+1;
        odb.close();
        return new Pais(contador, pais);
    }
    else
    {
        odb.close();
        return (Pais)listado.getFirst();
    }
}

gestionLiga.altaJugador код:

public void altaJugador(String nombre, String deporte, String ciudad, int edad, Pais pais)
{
    odb = ODBFactory.open("EQUIPOS.test");
    Jugadores jugador = new Jugadores(nombre, deporte, ciudad, edad, pais);
    odb.store(jugador);
    odb.close();
}

Код класса Pais:

class Pais 
{
 private int id;
 private String nombre;

public Pais(){}

public Pais(int id, String nombre) {
    this.id = id;
    this.nombre = nombre;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public String toString()
{
    return this.nombre;
}
}

Код класса Jugadores:

public class Jugadores 
{

private String nombre, deporte, ciudad;
private int edad;
private Pais pais;
public Jugadores(){} 

public Jugadores(String nombre, String deporte, String ciudad, int edad, Pais pais) 
{
    this.nombre = nombre;
    this.deporte = deporte;
    this.ciudad = ciudad;
    this.edad = edad;
    this.pais = pais;
}

public String getNombre() 
{
    return nombre;
}

public void setNombre(String nombre) 
{
    this.nombre = nombre;
}

public String getDeporte() 
{
    return deporte;
}

public void setDeporte(String deporte) 
{
    this.deporte = deporte;
}

public String getCiudad() 
{
    return ciudad;
}

public void setCiudad(String ciudad) 
{
    this.ciudad = ciudad;
}

public int getEdad() 
{
    return edad;
}

public void setEdad(int edad) 
{
    this.edad = edad;
}

public Pais getPais() {
    return pais;
}

public void setPais(Pais pais) {
    this.pais = pais;
}

@Override
public String toString() {
    return "NOMBRE: " + nombre + " - DEPORTE: " + deporte + " - CIUDAD: " + ciudad + " - EDAD: " + edad + " - PAIS: " + pais;
}


}

Если я введу двух игроков с одной и той же страной, запрос в теории должен вернуть меня к тому, что уже существует Pais с таким именем, который не должен создавать новое,Однако введите IF и создайте новый.

Спасибо за помощь!

1 Ответ

0 голосов
/ 07 февраля 2019

Я просто не закрываю odb на sacarPais, затем я не открываю (потому что я не могу открыть его дважды) на altaJugador.После вставки нового Jugador со ссылкой Pais я закрываю odb.Это сделано, но ***** т.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...