Pergunta

I'm using play 2.2.2, and I´m having problems with lists in One to Many Relatioships..

I have this current setup

@Entity
public class BD_Uno extends Model {
    @Id
    public int serial;

    @OneToMany(mappedBy = "bd_uno", cascade = CascadeType.ALL)
    public List<BD_DOS> bd_dos = new ArrayList<BD_DOS>();

    public static Finder<Integer,BD_Uno> find = new Finder<Integer,BD_Uno>(Integer.class, BD_Uno.class);
}

and also:

@Entity
public class BD_DOS extends Model {

  @Id
  public int serial;

  @ManyToOne
  public BD_Uno bd_uno;

}

The current problem is that when I want to get the list of the One to Many Relationship, it always seems to be null:

    BD_Uno uno= new BD_Uno();
    BD_DOS dos = new BD_DOS();
    dos.serial = 2;
    dos.save();

    BD_DOS dos_dos =  new BD_DOS();
    dos_dos.serial = 3;
    dos_dos.save();     

    uno.serial = 1;
    uno.bd_dos.add(dos);
    uno.bd_dos.add(dos_dos);

    uno.save();

    BD_Uno test = BD_Uno.find.byId(1);

In this case when I see test.bd_dos it is always null! What I´m doing wrong, I guess is something pretty stupid but is giving me a headache!

Thanks for the time, Claudio

Foi útil?

Solução

Don't initialize bd_dos here:

@OneToMany(mappedBy = "bd_uno", cascade = CascadeType.ALL)
public List<BD_DOS> bd_dos = new ArrayList<BD_DOS>();

Instead, you can try the following:

@OneToMany(mappedBy = "bd_uno", cascade = CascadeType.ALL)
public List<BD_DOS> bd_dos;

...

BD_Uno uno= new BD_Uno();
uno.serial = 1;    
uno.bd_dos = new ArrayList<BD_DOS>();

BD_DOS dos = new BD_DOS();
dos.serial = 2;
// relate dos back to bd_uno  
// this should be optional since Ebean does this on its own  
dos.bd_uno = uno;

BD_DOS dos_dos =  new BD_DOS();
dos_dos.serial = 3;
dos_dos.bd_uno = uno;

uno.bd_dos.add(dos);
uno.bd_dos.add(dos_dos);

uno.save();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top