이것은 Hibernate와 PostgreSQL을 사용하는 JavaEE6 어플리케이션입니다. 사용자는 Long ID를 생성하는 @GeneratedValue(strategy = GenerationType.AUTO)
으로 데이터베이스에 생성됩니다. user_name 열에있는 이름의 고유성을 보장 할 수 없기 때문에 데이터베이스의 user_id 열을 로그인 영역의 이름 열 (예 : request.login(id.toString(), password)
)로 사용하려고합니다. 그러나 Glassfishv3에서 기본 제공되는 FORM 인증을 사용하면 메커니즘에서 데이터베이스의 열이 var char이 될 것으로 예상하므로 실패합니다.
그래서 나는 사용자가 데이터베이스에 문자열 string_id가 생성 될 때 동시에 값을 채울 수있는 방법을 찾고 있는데,이 값은 문자열로 자동 변환 된 ID가됩니다. 후속 작업에서이 작업을 수행 할 수 있었지만이 작업을 한 번에 수행 할 수 있는지 궁금합니다. @PrePersist 시도했지만 ID가이 단계에서 생성 된 것 같습니다. 또는 더 똑똑한 방법으로 로그인을 수행 할 수 있습니까?생성시 idoth 컬럼에 복사 할 ID를 생성합니다.
감사합니다.
그러나 복사
코드를 em.persist 이상 (a)는 이점이있다,이 a.setName (a.getId(). toString()); em.flush()? 왜 그걸 한 번 쐈어? – user244129