我的实体有一个maporder字段,我希望像下面这样自动递增:
@Entity
public class Map{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(columnDefinition = "serial")
private Long mapOrder;
//.......
}
生成的sql看起来不错:
CREATE TABLE map
(
id bigserial NOT NULL,
map_order serial NOT NULL,
...
)
但当我将其与Spring Data JPA的存储库一起保存时,如下所示:
Map m=new Map();
repo.save(m);
将给我例外:
Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "map_order" violates not-null constraint
有什么想法吗?
我也有同样的问题。在我的例子中,错误在于创建表。
您需要使用串行类型而不是其他类型(至少在Postgres中)。
前(bigint类型)
CREATE TABLE IF NOT EXISTS sample_table
(
id BIGINT NOT NULL,
...
);
之后(串行类型)
CREATE TABLE IF NOT EXISTS sample_table
(
id SERIAL NOT NULL,
...
);
实体类中的id如下所示:
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
@GeneratedValue
与标识符一起使用,不能与常规字段一起使用。
例如,您可以为序列使用一些对象(使用任何密钥生成策略):
@Entity
public class JpaNoPkSequence {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id", nullable=false, updatable=false)
private Long id;
}
用于使用策略GenerationType。序列应在数据库中创建序列:
CREATE SEQUENCE JPA_PK_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
ALTER SEQUENCE "JPA_PK_SEQ" OWNER TO something;
这应该在密钥定义中指定。您还应该添加与对象的一对一关系,用于获取正则字段的序列:
@Entity
public class Map {
@Id
@SequenceGenerator(name="jpaPkSeq", sequenceName="JPA_PK_SEQ", allocationSize=1, initialValue = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "jpaPkSeq")
@Column(name = "id", nullable=false, updatable=false)
private Long id;
@OneToOne
private JpaNoPkSequence sequence;
...
}
希望这有帮助。
尝试将您的代码更改为:
@GeneratedValue(strategy = GenerationType.SEQUENCE)
参考:https://stackoverflow.com/a/29028369
这是我的代码,但当我尝试插入另一个“analise”时,num\u cedula,num\u doente,data\u analise为NULL,它会给我这个错误(“错误:num\u cedula”列中的NULL值违反了非NULL约束细节:失败的行包含(32,Ortopedia,NULL,NULL,NULL,NULL,2019-12-02,glicemia,176,Instituicao1)。S
堆栈溢出。 和 详细信息:失败行包含(18,Item Name在这里,这是描述,40.00,items/pattern.png,lXBjgo70QIrI8aF,1,null)。 这是完整的回溯 null 提前谢谢你
当我打印申请者的技能列表时,我有以下内容: 下面是一张表格,列出了申请人和技能之间的联系: 但是当我试图保存申请者时,我有这样一个提示:失败的行包含(23,null,null,499)。有人能给我解释一下吗?我正在使用jpa注释开发一个spring应用程序。
我在postgresql中创建了一个存储过程,如下所示: 是->的类型 我在插入时得到如下错误:
我有这张桌子: 一个任务可以依赖于另一个任务来解锁。所以我有下一个反射表: 我从另一个表导入数据,如下所示: 玩家任务表如下所示: 我们可以看到,并非所有任务都相互依赖,因此可能存在空值。 我收到以下错误: 错误:关系“depends”的“id\u mission\u 2”列中的null值违反了非null约束 失败的行包含(14, null)。 我怎样才能解决这个问题? 数据库:PostgreSQ
我正在使用JBPM6.5.0Final和Postgres数据库连接。当我尝试通过jbpm-workbench容器启动时,会出现以下错误: 而且还有 提前谢了。