2017-01-27 8 views
0

以下は私のシナリオです。HibernateのJackson Jsonからフェッチされた永続エンティティ

私は2つのエンティティを持っています。その中で

1)クライアント

2)プロジェクト

関係は一つのクライアントが多くのプロジェクトを提供しています。次のように私は私のクライアント(親が、

{ 
    "name": "Project 1", 
    "description": "client Project 1", 
    "startDate": "2012-07-21 12:11:12", 
    "endDate": "2017-07-21 12:11:12", 
    "totalPlannedReleases": 20, 
    "projectKey": "MAQ", 
    "avatar":"Not Available", 
    "client": {"clientId":1} 
} 

をサーバにされて要求しながら、

@Entity 
@Table(name="client") 
public class Client extends BaseEntity<Long> { 
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long clientId; 
    ...... 
    ...... 
} 


@Entity 
@Table(name="Project") 
public class Project extends BaseEntity<Long>{ 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long projectId; 
    ....... 

    @ManyToOne(cascade = CascadeType.ALL) 
    @JoinColumn(name = "clientId") 
    private Client client; 

    ....... 

} 

私のサービス層が

@RestController 
@RequestMapping("/project") 
public class ProjectController { 

    @Autowired 
    private ProjectService projectService; 


    @RequestMapping(value = "/add", method = RequestMethod.POST) 
    public ResponseEntity<String> add(@RequestBody Project project, BindingResult result) throws JsonProcessingException { 

     ........ 
     projectService.saveProject(project); 

     .... 

    } 

} 

私のJSON、のように見える、休止中のエンティティの両方を作成しましたエンティティ)は既にデータベースに保持されています。既存のclientIdを、私が挿入している新しいプロジェクトに参照する必要があります。プロジェクトを挿入しながら

は、私は、JSONライブラリ

としてジャクソンを使用していますクライアントエンティティがマップすることができますどのような方法があるように/自動的にフェッチ?

答えて

0

「自動的に」とはどういう意味ですか?

Projectは、クライアントの所有側である場合 - (それはおそらくあなたの要件ごとにする必要があります)プロジェクトの関係(あなたはHibernateセッションを使用している場合、またはproject.setClient(session.load(Client.class, id)))、あなたは全体の状態を読み込む避けるためにproject.setClient(entityManager.getReference(Client.class, id))を呼び出すことができますデータベースからのClientエンティティ。

関連する問題