这是JPA实体架构的一部分



    @Entity
    @Table(name="customer")
    public class Customer implements Serializable {

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name="customer_id")
        private Long id;

        @ManyToOne
        @JoinColumn(name="company_id",nullable=false)
        private Company company;

    //...

    }

    @Entity
    @Table(name="company")
    public class Company implements Serializable {

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name="company_id")
        private Long id;

    //...

    }

    @Entity
    @Table(name="order_header")
    public class OrderHeader implements Serializable {

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name="order_id")
        private Long id;


        @ManyToOne
        @JoinColumn(name="customer_id",nullable=false)
        private Customer customer;

        private Long internalCompanyOrderId;

    //...

    }



我需要为每个Company_id检索一个唯一的internalCompanyOrderId序列。这意味着订单PK仍然是'order_id',我需要为每个公司提供一个“内部” order_id。

最佳答案

您的代码示例中没有@TableGenerator出现。我假设您想使用@GeneratedValue生成值。

关于JPA 2.0,根据规范,不能将@GeneratedValue用于不属于主键的字段:


  GeneratedValue批注可以应用于主键属性
  实体或映射超类的字段或字段以及ID
  注解。 [97]
  ...
  [97]便携式应用程序不应使用
  其他持久字段或属性上的GeneratedValue注释。

10-04 11:08