这是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注释。