Hi all,
I use resquestfactory with Locator and ServiceLocator and am trying to
persist an entity that has a one to many, but the layer server children are
not sent. When I do find, the children leave the server to the client layer
without problems using .wth("child"). Anyone know how to persist in a
single request?
Follow the entity used:
-- Parent --
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="usuario_seq")
@Column(name = "ID", nullable = false)
private Long id;
@Column(name="\"ADMIN\"", length = 1)
private boolean admin = false;
@Column(name = "EMAIL", length = 60)
private String email;
@Column(name = "SENHA", length = 60)
private String senha;
@Column(name="SESSION_ID")
private String sessionId;
//@Version
@Column(name="\"VERSION\"")
private Integer version = 0;
//bi-directional many-to-one association to UsuarioIe
@OneToMany(targetEntity=UsuarioIe.class, cascade=CascadeType.ALL,
mappedBy="usuario", fetch = FetchType.EAGER)
private List<UsuarioIe> usuarioIes;
@PrePersist
@PreUpdate
protected void increment() {
version = version + 1;
}
-- Child --
public class UsuarioIe implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private UsuarioIePK id;
//@Version
@Column(name="\"VERSION\"")
private Integer version = 0;
//bi-directional many-to-one association to Usuario
@ManyToOne //(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "USUARIO_ID", nullable = false, insertable = false,
updatable = false)
@PrimaryKeyJoinColumn(name="USUARIO_ID", referencedColumnName="ID")
private Usuario usuario;
@PrePersist
@PreUpdate
protected void increment() {
version = version + 1;
}
-- That way I'm doing the persistence --
RequestContext context = editorDriver.flush();
this.cachedObject = cachedRequestContext.edit(cachedObject); //here comes
the object without the children
List<UsuarioIeProxy> teste = new ArrayList<UsuarioIeProxy>(); //'m riding
the children to manually test
for (int i=0; i < ies.getItemCount(); i++) {
UsuarioRequest usuarioRequest = getRequestFactory().usuarioRequest();
UsuarioIeIdProxy id = usuarioRequest.create(UsuarioIeIdProxy.class);
UsuarioIeProxy ie = usuarioRequest.create(UsuarioIeProxy.class);
id.setIes(ies.getItemText(i));
id.setUsuarioId(cachedObject.getId());
ie.setId(id);
teste.add(ie);
}
cachedObject.setUsuarioIes(teste);
cachedRequestContext.persistir(cachedObject).to(new Receiver<Void>() { //
@Override
public void onSuccess(Void arg0) {
performLeave();
AppUtils.eventBus.fireEvent(new UsuarioEvent(null, EditorMode.LEAVE));
//TODO - fazer o refresh por linha ou tudo?
}
});
context.fire();
Thank you.
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-web-toolkit/-/-DWwXag8gEoJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.