@Embeddable
public class Address {
@Column(name="str")
private String street;
@Column(name="nr")
private int number;
// getters/setters
}
, а адрес @Embeddable используется в двух местах в пользовательском элементе как: адрес User.mainAddress и список 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 для User.otherAddresses кажется, что они игнорируются, я ожидал, что таблица user_addresses будет иметь структуру столбца как:
user_addresses(other_user_address_number, other_user_address_street, user_id)
Яотсутствует или это ожидаемый результат?
Зависимости: