【发布时间】:2021-02-04 01:22:43
【问题描述】:
您能帮我解决以下错误吗?我将 spring-data-jdbc 与 Liquibase 和 Azure SQL 数据库一起使用。当我想使用 UserRepository.save
将对象保存到数据库时,我得到了这个java.lang.IllegalArgumentException: 保存后标识符不能为空! 在 org.springframework.util.Assert.notNull(Assert.java:201) 在 org.springframework.data.jdbc.core.JdbcAggregateTemplate.store(JdbcAggregateTemplate.java:343) 在 org.springframework.data.jdbc.core.JdbcAggregateTemplate.save(JdbcAggregateTemplate.java:149) 在 org.springframework.data.jdbc.repository.support.SimpleJdbcRepository.save(SimpleJdbcRepository.java:55)
实体:
@Table("user_details")
public class UserDetails {
@Id
Long id;
@Column("email_address")
String emailAddress;
@Column("first_name")
String firstName;
@Column("last_name")
String lastName;
}
存储库:
@Repository
public interface UserRepository extends CrudRepository<UserDetails, Long> {
}
Liquibase:
<changeSet id="0001_user_details">
<createSequence sequenceName="user_details_seq" startValue="1"/>
<createTable tableName="user_details">
<column name="id" type="BIGINT" defaultValueSequenceNext="user_details_seq">
<constraints nullable="false"/>
</column>
<column name="email_address" type="VARCHAR(1024)">
<constraints nullable="true"/>
</column>
<column name="first_name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="last_name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
</createTable>
<addPrimaryKey tableName="user_details" columnNames="id"
constraintName="user_details_pk"/>
</changeSet>
生成的架构:
create sequence user_details_seq
go
create table user_details
(
id bigint
constraint DF_user_details_id default NEXT VALUE FOR [user_details_seq] not null
constraint user_details_pk
primary key,
email_address varchar(1024),
first_name varchar(255),
last_name varchar(255),
)
go
马文:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.1.jre14</version>
</dependency>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.8.9</version>
</dependency>
【问题讨论】:
-
好像是id栏的问题。
标签: java sql-server spring-boot azure-sql-database spring-data-jdbc