当前位置: 首页 > 知识库问答 >
问题:

JPA@Embedded注释是强制性的吗?

艾安和
2023-03-14

我尝试省略@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

我的配置:

  • JBoss EAP 6.4.0
  • hibernate-jpa-2.0-api-1.0.1.final-redhat-3.jar

JPA规范规定:

指定一个类,其实例存储为所属实体的固有部分,并共享该实体的标识。嵌入对象的每个持久属性或字段都映射到实体的数据库表。

共有1个答案

濮阳烨然
2023-03-14

在使用Hibernate的情况下,是否注释字段本身(作为@embedded)或是否注释引用的类(作为@embeddable)并不重要。至少需要两者之一才能让Hibernate确定类型。

在Hibernate文档中有一个关于这一点的(隐式)语句,请查看这里:http://docs.jboss.org/Hibernate/core/3.6/reference/en-/html/mapping.html#mapping-declaration-component

上面写着:

Person实体有两个组件属性,homeAddress和Bornin。homeAddress属性没有被注释,但是Hibernate会通过查找Address类中的@Embeddable注释来猜测它是一个持久组件。

 类似资料:
  • 问题内容: 我试图 忽略 了注释,并且仍然领域已经嵌入在表中。我找不到任何能说明注解是可选的内容。 是 还是 不是 可选的? 以下代码 生成始终相同的表 即使我 没有 指定。 我的配置: 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

  • 问题: count属性是必需的&前缀是必需的。如果您看到beanClass2,我将通过构造函数设置属性,在beanClass3中也是如此 但是当我执行代码时,它抛出异常。让我困惑的重要事情是: 2014年12月9日8:47:33 PM org.springframework.beans.factory.support.defaultsingletonbeanregistry destroySing

  • 问题内容: 我正在从本教程中学习JPA 。 我在理解以下注释时有些困惑: 可嵌入类型的字段默认为持久性,就像用@Embedded注释一样。 如果可嵌入类型的字段默认为持久性,那么为什么我们需要注释 问题答案: 该注解允许指定一个类,其实例存储为拥有实体的固有部分。此注释 没有属性 。 该注释用于指定其值是一个可嵌入类的实例实体的持久字段或属性。默认情况下,类中指定的列定义适用于拥有实体的表,但是

  • 问题内容: 嵌入式注释如何影响数据库? SQL查询将如何改变? 使用注释的典型用例是什么? 问题答案: 嵌入式注释如何影响数据库? 它根本不影响它。在ORM提供程序层上,来自嵌入式实体的所有字段都 将 与父实体 合并 ,并像对待它们始终在其中声明一样。换句话说,它的工作方式就好像您将所有字段,获取器和设置器直接复制到包含嵌入式对象的实体中一样。 SQL查询将如何改变? 他们不会。您无需更改任何内容

  • 我有一个spring rest服务,它接受Person对象。Person对象具有名称、电话号码和电子邮件。当添加一个人时,电话号码是强制性的。如果存在电话号码属性,它将使用或或验证是否为空。但是如果属性不存在,验证就不起作用。请建议提供任何验证注释,以检查JSON请求中是否存在该属性。 以下是请求体测试用例 {“name”:“anu”,“phonenumber”:“”,“email”:“test@

  • 我正在阅读使用Spring框架的事务管理。在第一个组合中,我使用Spring Hibernate和Hibernate的API来控制事务(Hibernate API)。接下来,我想使用注释进行测试,它确实起了作用。 我感到困惑的是: > JPA、JTA、Hibernate是否有自己的事务管理方式。举个例子,考虑如果我使用Spring Hibernate,在那种情况下,你会使用“JPA”事务吗? 就像