我可以在@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,然后错误消失。