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

Spring boot JPA实体

柳俊健
2023-03-14

我有一个名为Order的实体,它引用了一个名为project的实体,如下所示:

@Entity
@Table(name = "customer_order")
public class Order {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "project_id", nullable = false)
    private Project project;

    @Column(name = "user_id")
    private String userId;

    @Column(name = "created_at")
    @CreationTimestamp
    private Date createdAt;
}

我的存储库如下:

@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
}

当我调用我的rest getendpoint来获取所有订单的列表时,在响应中,我在主订单对象中获得了一个项目对象,其中也包含“项目”类的所有属性。我不想这样。我需要一个精益订单响应对象,它只需要引用的项目ID。我尝试在订单类中的“项目”属性上使用下面的注释,但它完全摆脱了项目细节。

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)

我仍然需要关联项目的id。我该怎么做?

共有1个答案

訾朗
2023-03-14

我假设你的endpoint是JSON。

在这种情况下,您必须编写自己的序列化程序。

  • 对于Gson,这可以通过实现JsonSerializer并将其注册为类型适配器来实现
 类似资料:
  • 当我将Java EE应用程序部署到Glassfish时,我有一个非常奇怪的问题。我有一个Eclipse EAR项目,它引用了一个Web项目(包含一个servlet),一个EJB项目(有一个EJB)和一个JPA项目(有一个@Entity)。在我的 servlet 中,我调用 EJB,它又执行以下查询: 在上面代码的第三行,我得到了一个异常: 我已经调试了上面提到的Hibernate类,即Metamo

  • 我使用的是Hibernate4,启用了惰性加载。我有一个包含对其他对象的引用的基本实体。下面是一个简单的例子: 当我从数据库加载Employee实体时,boss对象由一个Hibernate代理对象表示,这是由于延迟加载的原因。稍后我需要访问boss属性,该属性可能在加载它的同一会话中,也可能不在同一会话中。如果我尝试使用boss对象,但它还没有加载,而我处于不同的位置,我将得到以下错误: 我真的想

  • 问题内容: 对于MySQL / SQL的分配,我需要创建2个不同的表以显示 强实体和弱实体之间 的 差异 。 有人可以向我展示我如何做到这一点的例子吗? 我知道一个强实体可以不存在另一个实体而存在,而对于一个弱实体却不是这样。因此,例如,一个强大的实体如下所示: ? 但是我不确定如何创建一个显示差异的表。 问题答案: 想象一下带有以下各列的表: 该表如下所示: 现在,每个 Manager都是一个E

  • 问题内容: “独立实体”是什么意思?在交易期间如何将托管实体转换为独立实体? 问题答案: 分离实体是状态不能由JPA提供程序反映的实体。 换句话说,如果您更改其状态(即通过setter方法),则这些更改将不会保存到基础数据库中,因为JPA提供程序不必“观察”此类实体。 如果实体E1是受管实体,则可以使其分离调用(非常合理的命名)方法。您还可以使用它将清除整个PersistenceContext并有

  • 问题内容: 我们将使用DTO在表示层之间来回发送数据。我们有像这样的图层: facade appService domain 并且我们使用推土机来帮助我们将实体转换为dto。但是我现在有两个问题: 从实体到dto,我们可以使用推土机,但是从dto到实体,我们可以使用推土机吗?如果是,如何? 我应该在哪里创建实体?在外观或DTOAssembler中? 例如,我必须注册一本书。这本书的实体外观如下:

  • 实体框架5.0首先使用现有数据库编写代码。使用电动工具对类进行逆向工程。一切都很好。数据库有两个表。一个父母和一个孩子的外键返回到父母ID。ID都是带有自动增量的int。我添加了许多父母记录,现在想将孩子记录添加到特定的父母。我能看到的唯一方法是通过在父母表中搜索名称或其他属性并返回ID来找到适当的父母ID。然后在添加孩子时在外键属性中使用该ID。我不想设置新父母,所以这是将孩子添加到现有父母的唯

  • 实体是用于定义XML文档中特殊字符的快捷方式。 实体主要有四种类型 - 内置实体 字符实体 常规实体 参数实体 1. 实体声明语法 通常,实体可以在内部或外部声明。 让我们了解以下各项及其语法如下 - 1.1. 内部实体 如果在DTD中声明实体,则称为内部实体。 语法 以下是内部实体声明的语法 - 在上面的语法中 - 是实体的名称,后跟双引号或单引号中的值。 保存实体名称的值。 通过向实体名称(即

  • Serenity 实体系统是一个微 ORM,它像 Dapper 那样对 SQL 情有独钟。 不同于完全成熟的ORM,如 NHibernate/Entity Framework,Serenity 提供智能感知地映射和查询数据库所需的最小功能、编译时检查和容易的重构。 Serenity 的实体通常像 XYZRow 这样命名。它们是 Serenity.Data.Row 子类。 让我们来定义一个简单的行类