当前位置: 首页 > 面试题库 >

JPA:@Embeddable对象如何获得对其所有者的引用?

郎诚
2023-03-14
问题内容

我有一个具有@Embedded类Profile的User类。如何给Profile实例引用其所有者User类?

@Entity
class User implements Serializable  {
   @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Integer id;

   @Embedded Profile profile;

   // .. other properties ..
}

@Embeddable
class Profile implements Serializable {

   User user; // how to make this work?

   setURL(String url) {
      if (user.active() ) { // for this kind of usage
         // do something
      }
   }

   // .. other properties ..
}

问题答案:

假设JPA而不是严格@Embedded地处于hibernate状态,则可以通过应用getter / setter对而不是私有成员本身来实现。

@Entity
class User implements Serializable {
   @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Integer id;

   @Access(AccessType.PROPERTY)
   @Embedded
   private Profile profile;

   public Profile getProfile() {
      return profile;
   }

   public void setProfile(Profile profile) {
      this.profile = profile;
      this.profile.setUser(this);
   }

   // ...
}

但是,我想问的是,在这种情况下,嵌入式实体是否就是您想要的,而不是@OneToOne关系,或者只是将Profile类“展平”到User中。@Embeddable的主要原理是代码重用,在这种情况下这似乎不太可能。



 类似资料:
  • 问题内容: 是否有可能在Java中获得对对象的所有引用。 我需要检查的是对象是否删除了所有的回调订阅。 谢谢 问题答案: 这可以通过JVMTI实现,并且通常由堆分析器完成。但是,它不能在Java内部完成。

  • 我遇到了与Rust的所有权规则和特性对象downcast的冲突。这是一个示例: 方法必须返回

  • 我有一个模型,在几个模型中设置为外键。现在从模型中删除任何对象时,如果该对象在这些模型中被引用,则会抛出ProtectedError。我想让用户在一次操作中删除包含所有受保护对象的对象。 我只需调用 但是当有自己的受保护对象时,操作失败并抛出另一层。我想要实现的是,删除所有受保护的对象,而不区分它存在于哪一层。我知道这可能是一个危险的操作。但我能在没有复杂解决方案的情况下实现这一点吗。提前谢谢。

  • 我试图获得对创建java的GoogleMap对象的引用,但我不知道如何获得这个引用。

  • 问题内容: 我有一张表,上面有列 如何编写查询以返回实体的所有父级,以返回类似 无论如何,我不是SQL忍者。这可能吗?如果是这样,怎么办? 我正在使用Microsoft SQL Server DB。 问题答案: 您需要在此处查找递归CTE (编辑:仅在SQL SERVER 2005+中) 类似于以下内容:

  • 问题内容: 是否有任何内置函数可以返回对象的长度? 例如,我有哪个应该返回。如果我使用它返回。 它可能是一个简单的循环函数,但我想知道是否有内置函数? 问题答案: 对于支持Object.keys()的浏览器,您可以执行以下操作: 否则(特别是在IE <9中),您可以使用循环自己遍历对象: 该是有确保你只从字面对象计数的属性,而不是从它的原型属性是“继承”。