如果您求助于使用传统的休眠而不是 GORM,那么您正在寻找的将是@ElementCollection
注释。从 Hibernate 的示例中:
@Entity
public class User {
[...]
public String getLastname() { ...}
@ElementCollection
@CollectionTable(name="Addresses", joinColumns=@JoinColumn(name="user_id"))
@AttributeOverrides({
@AttributeOverride(name="street1", column=@Column(name="fld_street"))
})
public Set<Address> getAddresses() { ... }
}
@Embeddable
public class Address {
public String getStreet1() {...}
[...]
}
我尝试使用单个域类和一个类列表创建一个测试项目,src/groovy
但没有成功。我尝试了将注释应用到他们示例中的所有内容的不同变体,@ElementCollection
但没有成功。我的假设是 Hibernate 注释根本不适用于 Grails 域类。这得到了Grails 文档的进一步支持,该文档将注释应用于src/java
. 对我来说,我不认为这是一个值得的选择。
至于拥有 GORM 等价物@ElementCollection
,在 Grails 中有一个未解决的 JIRA 票证,用于该确切功能:GRAILS-10095。
我质疑嵌入式对象集合的需要或好处;static embedded
与导致在域类的 SQL 表中真正嵌入附加列的传统嵌入对象(受支持)不同,嵌入集合将涉及拥有另一个表。从事 Hibernate 工作的人比我聪明,所以我确信这是有充分理由的。