2017-12-01 16 views
1

私はJHipsterでAngularJSを使ってアプリケーションを開発しています。私はそれらとの関係を持つ2つの実体を持っています:DemandelettreEtudiant。 DemandelettreエンタイトルメントにEtudiantエンティティキーを手動で保存する必要がありますが、作成しようとするとエラーが発生します。角度でエンティティの関係を保存する方法

私は入力値を入力値で置き換えて、入力値を関係のidのような他のエンティティに保存する必要があります。

<div class="form-group"> 
     <label for="field_etudiant">Etudiant</label> 
     <select class="form-control" id="field_etudiant" name="etudiant" ng-model="vm.demandelettre.etudiant" ng-options="etudiant as etudiant.matricule for etudiant in vm.etudiants track by etudiant.id"> 
      <option value=""></option> 
     </select> 
    </div> 

これはDemandelettreコントローラのデフォルトsave方法です:

function save() { 
     vm.isSaving = true; 
     if (vm.demandelettre.id !== null) { 
      vm.demandelettre.etattraitement = 1; 
      Demandelettre.update(vm.demandelettre, onSaveSuccess, onSaveError); 
     } else { 
      vm.demandelettre.datedemande = Date.now() ,'yyyy-MM-dd' ; 
      vm.demandelettre.etattraitement = 0; 
      Demandelettre.save(vm.demandelettre, onSaveSuccess, onSaveError); 
     } 
    } 

誰もが手動でentitieでこの外部キーを保存するためのソリューションを持っていますか? 申し訳ありませんが私の英語(貧しい人なら)。前もって感謝します。

+0

あなたに返されるエラーは何ですか?それについてもっと詳しく教えてください。 –

+0

ありがとうございます。オプション付きのデフォルトのメソッドはうまくいきます。しかし、私は手動で別のテーブルに外部キーを保存する必要があります。 エラー: JSON解析エラー:org.uasz.cri.domain.Etudiantのインスタンスを作成できません:いいえ文字列値からデシリアライズするString-argumentコンストラクタ/ファクトリメソッド( '233' ); –

+0

デフォルトでは、jhipsterはオプションでデータを取得し、他のテーブルに追加します。しかし、私のアプリケーションでは、入力テキストからデータを取得し、それを他のテーブルに保存する必要があります。私は彼らがどのように外部キーを自動で保存するのか分からない。 –

答えて

0

私の質問に答えました。詳細は、このビデオをご覧ください。リンク:https://youtu.be/pfK6njKkr0w

私はクラスDemandelettreEtudiantDaoを作成し、私は内側に置く:DemandelettreResource.javaで

package org.uasz.cri.web.rest; 

import org.springframework.jdbc.core.JdbcTemplate; 
import org.springframework.stereotype.Component; 
import org.uasz.cri.security.SecurityUtils; 

@Component 

public class DemandelletreEtudiantDao { 
    private final JdbcTemplate jdbcTemplate; 
    public DemandelletreEtudiantDao(JdbcTemplate jdbcTemplate){ 
     this.jdbcTemplate=jdbcTemplate; 
    } 
    public long getEtudiantIdByCurrentLogin(){ 
     String sql="select id from etudiant where email='"+ SecurityUtils.getCurrentUserLogin()+"'"; 
     System.out.println("Id Etudiant"+sql); 
     return this.jdbcTemplate.queryForObject(sql, long.class); 
    } 

} 

私はDemandelletreEtudiantDaoクラスのメソッドを呼び出します。

// Call DemandelletreEtudiantDao class method 
    private UserRepository userRepository; 
    private DemandelletreEtudiantDao demandelletreEtudiantDao; 
    private EtudiantRepository etudiantRepository; 

// Class constructor 
    @Autowired 
    public DemandelettreResource(
      DemandelettreRepository demandelettreRepository, 
      UserRepository userRepository, 
      EtudiantRepository etudiantRepository, 
      DemandelletreEtudiantDao demandelletreEtudiantDao) { 
     super(); 
     this.demandelettreRepository = demandelettreRepository; 
     this.userRepository = userRepository; 
     this.etudiantRepository = etudiantRepository; 
     this.demandelletreEtudiantDao = demandelletreEtudiantDao; 
    } 

// over post method 
     demandelettre.setEtudiant(etudiantRepository.findOne(demandelletreEtudiantDao.getEtudiantIdByCurrentLogin())); 
関連する問題