这是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',我需要每个公司的"内部"订单_id。
您的代码示例中没有出现@TableGenerator。我假设您希望使用@GeneratedValue生成值。
对于JPA 2.0,根据规范,您不能将@GeneratedValue用于不属于主键的字段:
GeneratedValue注释可以应用于主键属性或实体或映射超类的字段以及Id注释。[97]
…
[97]便携式应用程序不应使用其他持久字段或属性上的GeneratedValue注释。