这是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。
答案 0 :(得分:2)
代码示例中没有@TableGenerator。我假设你想用@GeneratedValue生成价值。
JPA 2.0是什么,根据规范你不能将@GeneratedValue用于不属于主键的字段:
GeneratedValue注释可以应用于主键属性 或实体的字段或映射的超类与Id一起使用 注解。 [97]
...
[97]便携式应用程序不应使用 对其他持久字段或属性的GeneratedValue注释。