我可以在@Embedded 中使用@ElementCollection 吗?
Can I use @ElementCollection inside an @Embedded?
我有一个包含更多字段的可选子实体的实体。子实体再次具有元素集合。
Hibernate 通常不可能做到这一点,还是我遗漏了什么?
@Entity @Table(name="my_entity")
public class MyEntity {
@Id
private Long id;
@Embedded
@JoinTable(name="..." joinColumns=@JoinColumn(name="myEntityId"))
private OptionalFields optionalFields;
}
@Embeddable
public class OptionalFields {
@ElementCollection
@CollectionTable(name="...", joinColumns=@JoinColumn(name="myEntityId"))
private List<OpeningHoursItem> openingHours;
}
@Embeddable
public class OpeningHoursItem {
}
错误信息是:
Could not determine type for: java.util.List, at table: my_entity, for columns: [org.hibernate.mapping.Column(opening_hours)]
这听起来可能很奇怪,但确实有效:
将所有注释从字段移至 getter,然后错误消失。
我有一个包含更多字段的可选子实体的实体。子实体再次具有元素集合。
Hibernate 通常不可能做到这一点,还是我遗漏了什么?
@Entity @Table(name="my_entity")
public class MyEntity {
@Id
private Long id;
@Embedded
@JoinTable(name="..." joinColumns=@JoinColumn(name="myEntityId"))
private OptionalFields optionalFields;
}
@Embeddable
public class OptionalFields {
@ElementCollection
@CollectionTable(name="...", joinColumns=@JoinColumn(name="myEntityId"))
private List<OpeningHoursItem> openingHours;
}
@Embeddable
public class OpeningHoursItem {
}
错误信息是:
Could not determine type for: java.util.List, at table: my_entity, for columns: [org.hibernate.mapping.Column(opening_hours)]
这听起来可能很奇怪,但确实有效:
将所有注释从字段移至 getter,然后错误消失。