Java Spring Boot:如何使用复合键创建实体

Java Spring Boot:如何使用复合键创建实体,java,spring-boot,orm,hibernate-mapping,Java,Spring Boot,Orm,Hibernate Mapping,我正在为一个项目创建我的类,使用图表进行练习,直到我偶然发现了这个order\u items: 我创建一个像订单或产品这样的实体没有问题,因为我知道,对于订单,我只需要执行以下操作: @Entity @Table(name = "orders") public class Orders { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "orde

我正在为一个项目创建我的类,使用图表进行练习,直到我偶然发现了这个
order\u items

我创建一个像
订单
产品
这样的实体没有问题,因为我知道,对于订单,我只需要执行以下操作:

@Entity
@Table(name = "orders")
public class Orders {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "order_id")
    private Integer orderId;
    // rest of the code...
}
@Entity
@Table(name = "products")
public class Products {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "product_id")
    private Integer productId;
    // rest of the code...
}
对于
产品
类似:

@Entity
@Table(name = "orders")
public class Orders {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "order_id")
    private Integer orderId;
    // rest of the code...
}
@Entity
@Table(name = "products")
public class Products {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "product_id")
    private Integer productId;
    // rest of the code...
}
但是表
order\u items
包含变量
order\u id
item\u id
,这算是复合键吗?如果是这样,那么这些变量在我的
OrderItems
类中应该是什么样子

@Entity
@Table(name = "order_items")
public class OrderItems {
    
    @Column(name = "order_id")
    private Integer orderId;
    @Column(name = "item_id")
    private Integer itemId;
    // rest of the code...
}
我检查了不同的问题,他们提到对复合密钥使用
@IdClass
@embeddedableid
,但我想首先确认在这种情况下我是否应该这样做,除非不是这样,否则可能还有更多的方法


我非常感谢您的意见和/或与此相关的任何文章,谢谢您的时间。

如您所述,您可以使用
@embeddedableid

下面是一个例子:

@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
public class OrderItemsPK  implements Serializable {
private static final long serialVersionUID = 1L;

    @Column(insertable = false, unique = false, updatable = false, nullable = false,name = "order_id")
    private Long orderId;

    @Column(insertable = false, unique = false, updatable = false, nullable = false,name = "products_id")
    private Long productsId;
}
和Order Items类

@Entity
public class OrderItems {

    @EmbeddedId
    private OrderItemsPK id;

    @OneToOne
    @JoinColumn(name = "products_id", nullable = false, unique = false, insertable = false, updatable = false, referencedColumnName = "products_id")
    private Products products;

    @OneToOne
    @JoinColumn(name = "orders_id", nullable = false, unique = false, insertable = false, updatable = false, referencedColumnName = "orders_id")
    private Order order;

    private Long itemId;
}

感谢您的回复,我将使用
@embeddeble
,然后,您的示例确实给了我一个如何处理复合键的部分想法,但我不会将其标记为答案,因为它没有提到
项id
订单项中应该如何查看。