0

使用 JSF 和 JPA 开发应用程序。

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)

Bill 是父类,是 OpdBill、PharmacyBill 等的子类。

多个用户可能会尝试同时持久化。

为 Bill 类生成序列号很容易,但这在功能中不是必需的。我们如何为子类单独自动生成序列号?(不需要ID,只需序列号)

4

2 回答 2

3

据我所知,JPA 无法为非 ID 列创建这样的序列,但您可以做一些像这样的肮脏解决方法:

生成第二个实体,如

@Entity
public class OpdSequence {
  @Id
  @GeneratedValue
  private Long id;
}

并为您的 OpdBill 创建一个 1-1

@Entity 
public class OpdBill extends Bill {
  @OneToOne
  private OpdSequence opdId;
}
于 2012-11-14T23:22:14.943 回答
1

如果 OpdBill 是账单,那么两者必须共享相同的 ID 字段,并且 Hibernate 必须能够通过它们的 ID 区分两个账单(无论它们的类是什么)。因此,所有子类必须与基类共享相同的 ID 生成,并且 Bill 及其子类的所有实例的 ID 必须是唯一的。

于 2012-11-14T22:58:50.867 回答