ID가 주석 처리 된 엔티티가 2 개 있지만 테이블의 기본 키가 아닌 엔티티가 있습니다. 나는 여전히 변경 사항의 초기 영향을 제한하기 위해 PK의 엔티티를 엔티티에 매핑하고 있습니다. 그러나 PK의 많은 관계로 많은 연결하는 데 사용하는 연결 테이블은 다음과 같은 오류를 던지고있다 :Hibernate 연관 테이블
java.lang.IllegalArgumentException: Provided id of the wrong type for class. Expected: class java.util.UUID, got class java.lang.Long
@Id는 UUID하지만 @JoinColumn
로 매핑되는 긴 인 테이블 PK하는 엔티티연관 엔티티
@Embeddable
public class CustomerAccountId implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "user_id", nullable = false)
private Long customerId;
@Column(name = "account_id", nullable = false)
private Long accountId;
의 복합 키 연관 엔티티 :
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "customerId", column = @Column(name = "user_id", nullable = false)),
@AttributeOverride(name = "accountId", column = @Column(name = "account_id", nullable = false))
})
private CustomerAccountId id;
@ManyToOne
@JoinColumn(name = "user_id", insertable = false, updatable = false, referencedColumnName = "user_id")
private Customer customer;
@ManyToOne
@JoinColumn(name = "account_id", insertable = false, updatable = false, referencedColumnName = "id")
private Account account;
,
실패한 기업이 심지어 가능한 경우
가@Column(name = "user_id")
private Long serialId; // also the primary key in the table
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@org.hibernate.annotations.Type(type="pg-uuid")
@Column(name = "uid", updatable = false)
private UUID id;
사람이 알고 있나요? 또는이 변경을 푸시 할 때 연관 테이블의 콘텐츠를 강제로 업데이트해야합니까?
직렬 ID 열을 보안 위험으로 노출시키고 PK로 UUID를 사용하여 성능이 저하되는 것을 피하기 위해 일련 ID를 PK로 유지하려고했습니다. 직렬 ID는 여전히 엔티티에 매핑되므로 단계별로 작업을 수행 할 수 있지만이 엔티티 ID가되고 싶지는 않습니다. – peekay
정확하게 이해한다면 ID 수정을 허용하지 않으시겠습니까? 참조 http://stackoverflow.com/a/2217064/2710704 – Tokazio
원래 순차적 ID를 사용했습니다.이제 보안 감사를 마친 후 UUID로 변환 중이지만 잠재적 인 성능 문제로 인해 UUID를 PK로 사용하고 싶지 않습니다. – peekay