OneToOne 관계가있는 두 개의 모델이 있습니다. 삽입 할 때 문제가 없지만 기본 모델을 업데이트하면 두 번째 모델에 새 행이 만들어집니다.Play Framework - 관계가있는 테이블 업데이트 OneToOne
내 모델.
차
public class Nodo extends Model {
@Id
private int id;
@Valid
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="GP_ID")
private GeoPunto geopunto;
차
@Entity
@Table(name="GeoPuntos")
public class GeoPunto extends Model{
@Id
private int id;
내 컨트롤러 :
public static Result editarEmpresa(Integer id){
if(!Secured.permiso()){
return ok(e403.render());
}
Form<Empresa> submitForm = empresaForm.bindFromRequest();
if (submitForm.hasErrors()) return badRequest(nueva_empresa.render(submitForm));
Empresa _empresa = submitForm.get();
_empresa.setId(id);
_empresa.update(Integer.parseInt(id + ""));
Form<Empresa> empresaForm = form(Empresa.class).fill(_empresa);
return ok(empresa.render(_empresa, empresaForm));
}
난 당신이 날 도울 수 있기를 바랍니다.
UPDATE 나는 메소드 UPDATE
@Override
public void update() {
String queryString = "UPDATE GEOPUNTOS SET " +
" latitud = :lat," +
" longitud = :long" +
" where id = :id";
SqlUpdate query = Ebean.createSqlUpdate(queryString).setParameter("lat", this.getGeopunto().getLatitud())
.setParameter("long", this.getGeopunto().getLongitud()).setParameter("id", this.getGeopunto().getId());
int rows = query.execute();
queryString = "UPDATE NODOS SET " +
" direccion_referencial = :dr," +
" ruc = :ruc, " +
" nombre = :nom " +
" where id = :id";
query = Ebean.createSqlUpdate(queryString).setParameter("dr",this.getDireccionReferencial())
.setParameter("ruc",this.getRuc()).setParameter("nom",this.getNombre())
.setParameter("id", this.getId());
rows = query.execute();
}
에게 overwriter했다 그러나 나는 ORM을 사용하면 내가이 작업을 수행 할 필요가 없습니다해야한다고 생각합니다.
컨트롤러 코드에서 첫 번째 모델 (Nodo)을 업데이트하는 코드를 표시하십시오. Empersa 만 볼 수 있습니다. – arbuzz
하지만 그렇다면. 이 캐스케이드. 기본 모델만으로 충분하지 않습니까? – JohnPortella
아니요, 엔티티를 어떻게 업데이트해야합니까? 예 : 'Nodo nodo = Nodo.find.where.eq ("id", 1) .findUnique(); nodo.smtn + = 1; nodo.save();' 아마도 모델 구현이 아니라 모델을 업데이트하는 코드의 문제 일 수 있습니다. – arbuzz