2016-06-09 5 views
0

Ich habe eine Tabelle mit vielen zu eins Beziehung. Dann habe ich versucht, Daten über den Controller zur Datenbank hinzuzufügen. In meinem Fall gibt es zwei Modelle genannt,Wie füge ich automatisch Daten zur Referenztabelle in Ebean Java Play hinzu?

Post.java

@OneToMany(mappedBy = "post") 
private List<PostText> postBody; 

PostText.java

@ManyToOne(fetch = FetchType.LAZY) 
@JoinTable(name="post") 
@JoinColumn(name = "post_id", referencedColumnName = "post_id") 
@NotNull 
private Post post; 

die Daten einzufügen Ich habe versucht,

@BodyParser.Of(BodyParser.Json.class) 
public Result add() { 
    JsonNode jsonNode = request().body().asJson(); 

    User user = userDAO.findByUsername(jsonNode.findPath(StringLiterals.USERNAME_KEY).textValue()); 
    if (user == null) { 
     return badRequest(JSONService.toJsonNode(new ResponseWrapper<>(
       jsonNode.findPath(StringLiterals.USERNAME_KEY).textValue() 
         .concat(ResponseMessages.USER_NOT_FOUND), null))); 
    } 
    Transaction transaction = Ebean.beginTransaction(); 

    try { 
     ObjectMapper objectMapper = new ObjectMapper(); 
     objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); 

     Post post = objectMapper.treeToValue(jsonNode, Post.class); 
     post.setUser(user); 

     // Use JDBC batch API with a batch size of 100 
     transaction.setBatchSize(4); 

     // Don't bother getting generated keys 
     transaction.setBatchGetGeneratedKeys(false); 

     // Skip cascading persist 
     transaction.setPersistCascade(false); 

     postDao.add(post); 
     this.post = post; 
     Ebean.commitTransaction(); 

     return ok("Done"); 
    } catch (IOException e) { 
     return badRequest(e.getLocalizedMessage()); 
    } finally { 
     Ebean.endTransaction(); 
    } 
} 

Dies funktioniert nur für add da ta nur in post Tabelle. Es fügt keine Daten zur post_text Tabelle hinzu. Wie kann ich Daten zu beiden Tabellen mit E-Bean hinzufügen?

Antwort

0

Verwenden Sie EBEAN? Wenn ja, warum verwenden Sie viel Code? Daten hinzufügen einfach so etwas wie folgt:

public Result save() { 

     Form<Computer> computerForm = formFactory.form(Computer.class).bindFromRequest(); 
     if(computerForm.hasErrors()) 
      {return badRequest(views.html.computers.createForm.render(AuthorisedUser.findByEmail(request().username()), computerForm));} 


     try 
     { 
      Computer computerData = computerForm.get(); 

      Computer computer = new Computer(); 

      computer.name = computerData.name; 
      computer.active = computerData.active; 
      computer.status = computerData.status; 
      computer.introduced = computerData.introduced; 

      computer.save(); 
      flash("success", "Computer [ " + computerForm.get().name + " ] has been created"); 

     return GO_HOME; 


     } 
     catch (Exception e) 
     { 
      Logger.error("add.computer.save error", e); 
      flash("erreur", "Computer [ " + computerForm.get().name + " ] has not been created"); 
     } 


     return GO_HOME; 

     /*String refererUrl = request().getHeader("referer"); 
     return redirect(refererUrl);*/ 
    }