【发布时间】:2017-02-28 13:18:30
【问题描述】:
我有表organisation,它有一列customer_number。
现在,我应该创建一个序列,每当创建一个新的 organisation 时 - 就像在新行中持久保存到表中一样 - 新行上的 customer_numbercolumn 将获得值 1 如果没有值存在于任何行的customer_number 列中。如果值确实存在,则新行将在所述列上获得一个值,该值将是表中所述列上的最大值加一。
示例:如果在 customer_number 列上没有行或只有行没有值,则新添加的 organisation 行将获得 1 作为其 customer_number 列的值。例如,如果在所述列上已经有两行具有值 - 例如 100 和 200 - 新行将在该列上获得值 201。
我只是想不出实现这个目标的 SQL 咒语。
数据库是 SQL Server 2012。
我已经有一个 ID 序列。在创建表的 SQL 脚本中是这样的:
CREATE SEQUENCE organisation_seq AS BIGINT START WITH 1 INCREMENT BY 1;
CREATE TABLE organisation
(
id BIGINT NOT NULL,
customer_number VARCHAR(50) UNIQUE,
... rest of the columns ...
);
在组织实体 bean 中是这样的:
@Entity
@Table(name = "organisation")
public class Organisation {
static Logger logger = Logger.getLogger(Organisation.class.getName());
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="organisationSeq")
@SequenceGenerator(name="organisationSeq", sequenceName="organisation_seq", allocationSize=1)
private Long id;
private String customerNumber;
... rest of the Entity properties ...
【问题讨论】:
标签: java sql jpa sql-server-2012 sequence