본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/spring

[JPA] EntityExistsException: detached entity passed to persist 문제 해결하기

by 미노드 2024. 3. 24.

Mbr1 소스에서 Mbr1 관련해서 엔티티가 이미 만들어져 더 생성할 수 없다는 에러가 나왔었습니다.

@Entity
@Table(name = "MBR")   // 테이블 id 원하는데로 지정가능,
@SequenceGenerator(
        name = "MBR_SEQ_GENERATOR",
        sequenceName = "MBR_SEQ",
        initialValue=1, allocationSize=1 )
@ToString
public class Mbr1 {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MBR_SEQ_GENERATOR")
    private Long id;
    private String username;

    public Mbr1(){}
    public Mbr1( String username) {
        this.username = username;
    }
    public Mbr1(Long id, String username) {
        this.id = id;
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

원인은

@SequenceGenerator(
        name = "MBR_SEQ_GENERATOR",
        sequenceName = "MBR_SEQ",
        initialValue=1, allocationSize=1 )

여기에서 allocationSize 값을 변경했을 때 일어낫습니다.
기존에 만들어진 시퀀스Size가 변경되어 적용되는게 아니라,
같은이름의 시퀀스를 만들어 버리다보니 에러가 뜨는것 같습니다.

ddl을 update상태로 해놔도 이런 상태이니, ddl만드는걸 jpa로 하는걸 운영에서 안쓰는 이유가 있나 봅니다.
변경시도를 하지 않고 원래대로 하거나, 시퀀스를 새로 만들도록 하니 해결 되었습니다.