gpt4 book ai didi

java - 为什么不在从 spring-data-jpa 保存返回的实体中设置 ID

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:53 27 4
gpt4 key购买 nike

我有一个简单的实体。我正在使用 spring-data-jpa 版本 1.2.0.RELEASE 和 eclipselink 2.4.1。

@Entity
@Table(name="platform")
public class Platform {

@Id
@Column(name="id", nullable=false, updatable=false, insertable=true)
private Long id;
// etc.
}

我想保存它。我的存储库看起来像

public interface PlatformRepository extends JpaRepository<Platform, Long> {

Platform findByName( String name );
}

我的 Controller 用这个方法很简单

@RequestMapping(method=RequestMethod.POST, produces="application/json")
public Platform post( Platform platform ) {
Platform result = platformDao.saveAndFlush(platform);
return result;
}

该方法的响应是

{"platform":{"id":null,"name":"Test1"}}

Select * from platform 显示Test1的ID为6,表定义为:

create table platform(
id int not null auto_increment primary key,
name varchar(128) not null);

我希望在保存后设置 ID,但事实并非如此。他们不希望我在写完实体后立即进行查找,对吧?

最佳答案

您没有在映射中指定 ID 是由数据库自动生成的。添加

@GeneratedValue(strategy = GenerationType.IDENTITY)

到您的 ID 字段。没有它,JPA 不知道它必须在插入后执行 select 语句才能从数据库中获取生成的 ID。

关于java - 为什么不在从 spring-data-jpa 保存返回的实体中设置 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13898982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com