使用 JSF 和 JPA 开发应用程序。
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
Bill 是父类,是 OpdBill、PharmacyBill 等的子类。
多个用户可能会尝试同时持久化。
为 Bill 类生成序列号很容易,但这在功能中不是必需的。我们如何为子类单独自动生成序列号?(不需要ID,只需序列号)
使用 JSF 和 JPA 开发应用程序。
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
Bill 是父类,是 OpdBill、PharmacyBill 等的子类。
多个用户可能会尝试同时持久化。
为 Bill 类生成序列号很容易,但这在功能中不是必需的。我们如何为子类单独自动生成序列号?(不需要ID,只需序列号)
据我所知,JPA 无法为非 ID 列创建这样的序列,但您可以做一些像这样的肮脏解决方法:
生成第二个实体,如
@Entity
public class OpdSequence {
@Id
@GeneratedValue
private Long id;
}
并为您的 OpdBill 创建一个 1-1
@Entity
public class OpdBill extends Bill {
@OneToOne
private OpdSequence opdId;
}
如果 OpdBill 是账单,那么两者必须共享相同的 ID 字段,并且 Hibernate 必须能够通过它们的 ID 区分两个账单(无论它们的类是什么)。因此,所有子类必须与基类共享相同的 ID 生成,并且 Bill 及其子类的所有实例的 ID 必须是唯一的。