2017-05-03 5 views
0

Spring-data-MongoDbの使用。私たちは、次の書類文書をdbrefで保存します。mongodb spring-data

@Document 
public class Company { 
. 
. 
@DBRef 
List<Person> personnel; 
} 

そして、Personクラスを持っているシナリオでは 。

@Document 
public class Person { 
@Id 
public String id; 

public String name; 
. 
. 
} 

今、私はIDを持つMongoDBの中にいくつかの人々を保存した場合は100を言うと200は、それらの者と会社を救う最良の方法は何ですか?

+0

この場合、RDBが必要なようです。 – StanislavL

答えて

1

まず、例えばMongoRepositoryインターフェイスを使用してリポジトリを作成します。どのコンポーネント/アプリケーションにオートワイヤリングするか。

これで、オブジェクトが作成され、dbに収まるように保存できます。ネストした人のpojosとsaveを呼び出してpojoを作成するだけです。

人はIDセットが必要であり、データベースに存在する必要があることに注意してください。あなたがmongodbで@Dbrefを使うとき、カスケードはありません!

public interface CompanyRepository extends MongoRepository<Company,String> 
{ 

} 

... 

@Autowired 
CompanyRepository repository 

public void createCompany(String name, List<Person> persons) 
{ 
    Company company = new Company(); 
    company.setName(name); 
    company.setPersonnel(persons); 
    repository.save(company); 
} 
+0

createCompanyでPersonを完全にスキップすることはできませんか?私は人のIDだけを使用しています。 DBRefとは、MongoDBの別の文書へのリンクを理解していることを意味します。そのため、Personはすでにdbに存在しているため、IDを渡すだけで十分です。 – Keyhan

+1

あなたは正しいですが、この例でも動作します。この仕事をするためには、@フィールドだけをフィールドに設定する必要があります。だから、単に "空の"人を作成してIDを100/200に設定すれば、それはうまくいくはずです –

+0

誰かがより良い解決策を持っているかどうか少し調べてみてください。 – Keyhan

関連する問題