You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JPA嵌入DeliveryOrder时如何为ProductDes列表关联表指定自定义名称

解决方法

ProductDes本身是标注了@Entity的独立实体类,要自定义它对应的数据库表名,直接给该类添加@Table注解、指定name属性为你想要的表名即可。

另外你现有代码需要补全2处配置,否则运行会报错:

  • 给DeliveryOrder类添加@Embeddable注解,才能支持被@Embedded嵌入到FailedDeliveryOrder的表中
  • 修正代码里的类名笔误(构造方法名、泛型类型拼写错误)

修改后的DeliveryOrder.java示例

// 补上@Embeddable注解
@Embeddable
public class DeliveryOrder {    
    @Entity
    // 此处指定自定义表名,替换为你需要的名称即可
    @Table(name = "custom_product_des_table")
    public static class ProductDes {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Long id;
        // 修正构造方法名和类名一致
        public ProductDes() {}
        // setter and getter
    }

    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
    @JoinColumn(
        name = "DeliveryOrder_ID",
        nullable = false
    )
    @OrderColumn(
        name = "ProductDes_Position",
        nullable = false
    )
    // 修正泛型类型拼写
    private List<ProductDes> product_descriptions = new ArrayList<ProductDes>();

    public DeliveryOrder() {
    }

    public DeliveryOrder(List<ProductDes> products) {
        this.setProduct_descriptions(products);
    }   

    public List<ProductDes> getProduct_descriptions() {
        return product_descriptions;
    }

    public void setProduct_descriptions(List<ProductDes> product_descriptions) {
        this.product_descriptions = product_descriptions;
    }
}

额外说明:自定义中间关联表的情况

如果你后续不想把外键存放在ProductDes表中,想要单独生成关联中间表,可以用@JoinTable注解自定义中间表的名称:

@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
// 自定义中间关联表配置
@JoinTable(
    name = "delivery_order_product_rel", // 自定义中间表名称
    joinColumns = @JoinColumn(name = "delivery_order_id"),
    inverseJoinColumns = @JoinColumn(name = "product_des_id")
)
@OrderColumn(
    name = "ProductDes_Position",
    nullable = false
)
private List<ProductDes> product_descriptions = new ArrayList<ProductDes>();

内容的提问来源于stack exchange,提问作者Constantine Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:54:04