我试过了,但省略了@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

我的配置:
  • JBoss EAP 6.4.0
  • hibernate-jpa-2.0-api-1.0.1.Final-redhat-3.jar

  • 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

    它说:

    08-27 15:46