我正在尝试为我的实体自动生成id:
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
我的db表是通过flyway脚本创建的,列id设置为identity
CREATE TABLE USERS (
ID INT NOT NULL GENERATED BY DEFAULT AS IDENTITY,
PRIMARY KEY (ID)
};
然后我尝试用我的存储库保存此实体:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {}
这样地:
userRepository.save(user);
但是这会导致一个错误
列“id”中的null值违反了not null约束
仅在连接到p时显示ostgresql:12.2,如果我用h2数据库运行相同的代码,它可以正常工作。
为什么postgresql会失败?
3条答案
按热度按时间am46iovg1#
以以下方式使用自动生成的ID:
你应该使用
SERIAL
id列的类型:细节:https://www.postgresql.org/docs/8.1/datatype.html#datatype-序列号
ua4mk5z42#
您应该创建序列并将该序列用于id
您应该在postgresql中创建序列:
wbrvyc0a3#
生成用户表
创建表users(id serial not null默认生成为identity,primary key(id)};