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

JPA,映射实体Person(包含类型名称的类)

湛玄裳
2023-03-14

我有一个实体Person,它由name属性组成

@Entity
public class Person {
      // ...
      //@Transient 
       private Name name;
      // ...
}

我不想在一个额外的表中存储“name”...我将name标记为transient,这样它就不会存储在基础数据库中。

我想要的是将属性“name”映射到数据库中的列“first_name”和“last_name”。

例如,我可以像new person(new Name(“john”,“doe”));那样创建一个人

如何实现映射,使基础表包含两个附加列first_name和last_name,内容是从name属性获得的字符串?

基于person实体的表应如下所示

idfirst_namelast_name 1无名氏2无名氏

共有1个答案

花烨
2023-03-14

您可以使用嵌入式:

@Embeddable
public class Name {

    private String firstName;
    private String lastName;

    // getters and setters
}

然后用它就像。

@Entity
public class Person {
      // ...
      private Name name;
      // ...
}

请参阅Hibernate文档:https://docs.jboss.org/Hibernate/orm/5.4/userguide/html_single/hibernate_user_guide.html#embeddables

 类似资料:
  • 快速总结我想要实现的目标。请给出实施或设计建议:) 我有两个表:用户,图像。在UserDO中,我希望保留一组所有用户的图像,以及单个图像,即用户的肖像(在我的示例中,该组将包括肖像): 在ImageDO中,我有一个userid作为外键来记录哪个用户上传了图像。但是它没有布尔值,因为认为一个用户可能会上传许多图像,但只有一个是肖像。 有什么方法可以实现这一点吗?或者我需要维护另一个表(例如,Port

  • 我正在使用JPA编写一个Java EE应用程序,它需要国际化。为此,我创建了一个名为multilingarstring的类,该类将语言与字符串相关联(并扩展了HashMap 现在,假设我们有一个实体,它根据语言的不同有不同的名称: 此代码生成以下数据库模式: 这几乎是好事。 此实现的问题是重复字段上的和方法上的(每次需要在数据库BTW中映射时都必须重新编写:每个实体类至少1个)。在我看来,它使代码

  • 我一直试图通过一个名为Guardian的中间类映射两个用户之间的一些“OneToOne”关系。当我试图检索一个用户(和他的监护人)时,从Glassfish(Open edition V4.0)返回一个内部服务器错误。但是,日志中没有显示任何类型的堆栈跟踪或任何错误。我怀疑问题是我在JPA类中的映射。 启动服务器时,我得到两个与Guardian类有关的警告,但我并不真正理解: 警告:映射到元素[me

  • 我必须用Java实现一个日志机制。所以我使用JEE,使用RequestFilter和拦截器。我把所有这些都放在一个叫做日志记录的包中。 我的类是:请求过滤器,响应过滤器和常量 所以我的问题是。因为类名已经存在于包中,所以不记录类名可以吗? 包日志记录和重复日志记录:请求过滤日志记录,响应过滤日志记录,ConstantsLogging

  • 我在JPA实体映射方面有问题。我有一些课: A级 类别b Classc *如何解决这个问题?*我还能使用类继承吗?还是另一个解决这个的方法? 谢了。

  • 我正在spring应用程序中使用graphql java工具。我有这样一个实体: 在GraphQL模式中,我想要一个不同的类型: 当然,由于模式解析异常,启动此操作将不起作用。所以我认为在模式解析之间放置一些东西来实现从到的映射是可能的。 这有可能吗? 编辑 抱歉,它不会给出架构解析异常。它将简单地将字节放入字符串中。但是我不能用这个字符串来创建图像。 澄清 对不起,我想我的问题还不够清楚。我不需