programing

@AttributeOverride가 있는 @Embeddable 항목의 JPA @ElementCollection

javajsp 2023. 10. 26. 20:44

@AttributeOverride가 있는 @Embeddable 항목의 JPA @ElementCollection

@Embeddable
public class Address {
  @Column(name="str")
  private String street;

  @Column(name="nr")
  private int number;

  // getters/setters
}

그리고 Address @Embeddable은 사용자 항목에서 Address User.mainAddress와 List User.otherAddresses의 두 위치에 사용됩니다.

@Entity
public class User {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private long id;

  @AttributeOverrides({
    @AttributeOverride(
      name="street", 
      column=@Column(name="main_user_address_street")),
    @AttributeOverride(
      name="number", 
      column=@Column(name="main_user_address_number"))
  })
  private Address mainAddress;

  @ElementCollection
  @CollectionTable(
    name="user_addresses", 
    joinColumns=@JoinColumn(name="user_id"))
  @AttributeOverrides({
    @AttributeOverride(
      name="street", 
      column=@Column(name="other_user_address_street")),
    @AttributeOverride(
       name="number", 
       column=@Column(name="other_user_address_number"))
  })
  private List<Address> otherAddresses;

  // getters/setters
}

이렇게 하면 다음과 같이 테이블이 만들어집니다.

user(ID, main_user_address_street, main_user_address_number)
user_addresses(nr, str, user_id)

질문:.

@AttributeOverrides for User.otherAddresses가 무시되는 것 같습니다. user_addresses 테이블의 열 구조는 다음과 같습니다.

user_addresses(other_user_address_number, other_user_address_street, user_id)

제가 뭔가를 놓치고 있는 건가요, 아니면 이것이 예상되는 결과인가요?

종속성:

  • 기관 eclipse지속성/ javax. persistence/2.2.0
  • 기관 eclipse지속성/ eclipselink/ 2.7.1
  • org. mariadb. jdbc/ mariadb- java- 클라이언트/ 2.2.4

  • 자바 버전: 1.8

언급URL : https://stackoverflow.com/questions/50413170/jpa-elementcollection-of-embeddable-items-with-attributeoverride