我试过了,但省略了@Embedded
批注中的,但字段仍嵌入在表中。我找不到任何可以说明@Embedded
注释是可选的内容。
是还是,不是可选吗?
以下代码
@Embeddable
public class Address {
String city;
String street;
}
@Entity
public class Person {
String name;
@Embedded // it seems that it works even if this annotation is missing!?
Address address;
}
生成始终相同的表person
name
city
street
即使我没有指定@Embedded
。我的配置:
JPA规范说:
http://docs.oracle.com/javaee/7/api/javax/persistence/Embedded.html
http://docs.oracle.com/javaee/7/api/javax/persistence/Embeddable.html
最佳答案
在使用Hibernate的情况下,是否注释字段本身(如@Embedded
)或注释引用的类(如@Embeddable
)都没有关系。使Hibernate确定类型至少需要两者之一。
在Hibernate文档中有一个(隐式的)声明,请看这里:
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#mapping-declaration-component
它说: