2017-11-16 1 views
0

새 사용자는 POST 메소드로 생성되며 이후에 데이터베이스에 고유 한 ID이 첨부됩니다. 이는 토큰을 생성하는 데 필요합니다.Java 서비스에서 POST 후 컨텐츠를 반환하는 REST

토큰을 만드는 유일한 방법은 사용자 생성 과정입니다. 데이터베이스에서 쿼리 한 결과 이제는 ID을 가져야하지만 어떻게 처리해야하는지 알 수 없습니다.

엔티티를 생성 한 직후 데이터베이스에서 엔티티를 검색 할 수있는 방법이 있습니까? 이 비슷한 질문에서 보았지만 대답을 찾을 수없는 경우

: Is it ok by REST to return content after POST?

@POST 
    @Consumes({MediaType.APPLICATION_JSON}) 
    public Response create(@QueryParam("email") String email, @QueryParam("username") String userName, @QueryParam("password") String password) { 
     if (TextUtil.isEmpty(userName) || TextUtil.isEmpty(password) || TextUtil.isEmpty(email)) { 
      return Response.status(Response.Status.BAD_REQUEST).build(); 
     } else { 
      User newUser = new User(); 
      newUser.setEmail(email); 
      newUser.setUsername(userName); 
      newUser.setPass(password); 
      super.create(newUser); //ths line create user in database 
      String id = newUser.getUid() + ""; //the newUser has no id yet so it is null but I want this id from database 
      return Response.status(Response.Status.OK).entity("id: " + id).build(); 
     } 
    } 

이 super.method 만들기

public void create(T entity) { 
     getEntityManager().persist(entity); 
    } 

나는이 튜토리얼 https://netbeans.org/kb/docs/websvc/rest.html

+0

내 질문을 eddited 한 –

+0

목록 super.create() 메소드를 추가하십시오. 고마워요 – coinhndp

+0

''' super.create (newUser); super.getEntityManager(). flush(); super.getEntityManager(). find (User.class, newUser.getUId()) ''' –

답변

0
를 사용하여 REST API를 생성
getEntityManager().persist(entity); 

엔티티는 entity.setId(...)을 호출하여.

+0

자동 증분을 사용하여 데이터베이스에 id를 설정했습니다. 코드로 ID를 어떻게 설정할 수 있습니까? 나는 그것을 바로 mannually 설정할 수 없습니까? – coinhndp

0

내 의견 EntityManager를 동기화하는 방법을 보여줍니다. 어쩌면 당신은 더 나은 create 방법 작성해야 :

public <T> T create(T t) throws Exception { 

     try { 
      entityManager.persist(t); 
      entityManager.flush(); 
     } catch (Exception e) { 
      throw e; 
     } finally { 
      entityManager.clear(); 
     } 

     return t; 
    } 

을 그리고

newUser = super.create(newUser); 
+0

id는 데이터베이스에만 생성되기 때문에 newUser는 ID를 가지고 있지 않다. – coinhndp

+0

entityManager.flush();가 호출되면 모든 변경 사항이 데이터베이스에 기록되고 JPA에 정의 된 Id가 생성된다. User의 UId 필드를 어떻게 생성합니까? –

+0

자동 증분을 사용하여 데이터베이스에서 생성합니다. id가 null이면 자동으로 사용자 ID를 생성합니다. ID를 어떻게 생성해야합니까? 나는 – coinhndp

관련 문제