当前位置: 首页 > 知识库问答 >
问题:

保存后标识符不能为空错误

尉迟国发
2023-03-14

我正在尝试为我们的一个项目构建一个POC,并且一直在试验spring数据jpa模块。我使用的是h2数据库,数据库只有一个表。我有一个映射到表的实体对象。我有一个获取json对象的测试控制器。我从它中创建了一个实体对象,该实体对象被传递到存储库。我有一个服务正在使用save()方法向表中插入一个新记录。我看到生成了正确的id,但操作失败,出现了一个异常--“保存后标识符必须不为空”。

    public AbsentIdentifierAccessor(Object target) {
        super(target);
    }

    /*
     * (non-Javadoc)
     * @see org.springframework.data.mapping.IdentifierAccessor#getIdentifier()
     */
    @Override
    @Nullable
    public Object getIdentifier() {
        return null;
    }
}
@Repository
public interface TimeSheetRepository extends JpaRepository<Timesheet,  Long> {

}

@Entity
@Table(name = "Timesheet")
public class Timesheet implements Serializable {

private static final long serialVersionUID = 7157684222538550301L;

@Id
@GeneratedValue
private Long timesheet_entry_id;

@Column(length = 100,nullable = false)
private String client;

@Column(length = 100,nullable = false)
private String project;

public Long getTimesheet_entry_id() {
    return timesheet_entry_id;
}

public void setTimesheet_entry_id(Long timesheet_entry_id) {
    this.timesheet_entry_id = timesheet_entry_id;
}
}

表:创建表时间表(timesheet_entry_id BIGINT(5)auto_increment NOT NULL主键、客户端VARCHAR(100)、project VARCHAR(100)、Projecode VARCHAR(100)、task VARCHAR(100)、hoursRounded VARCHAR(100)、billable BOOLEAN,Invooled BOOLEAN,approved BOOLEAN,firstname VARCHAR(100)、lastname VARCHAR(100)、department VARCHAR(100)、employee VARCHAR(100)、billableRate NUMERIC,Costate NUMERIC,costAmount

共有1个答案

拓拔俊艾
2023-03-14

使用生成类型策略并让Hibernate处理主键生成。

如果您想要自动增加主键,请使用下面的命令。

@GeneratedValue(strategy=GenerationType.AUTO)
 类似资料:
  • The blank identifier 空白标识符 We’ve mentioned the blank identifier a couple of times now, in the context of for range loops and maps. The blank identifier can be assigned or declared with any value of an

  • 本文向大家介绍sqlserver登陆后报不能为空不能为null的错误,包括了sqlserver登陆后报不能为空不能为null的错误的使用技巧和注意事项,需要的朋友参考一下 sql server 2012 值不能为null。参数名:viewinfo (microsoft.sqlserver.managemenmen) 是因为在C:\Users\你的用户名\AppData\Local\Temp\中,缺

  • 我正在尝试将JSF2.2与Spring4和Spring Data JPA(Hibernate)集成。按下“保存”按钮时出现以下异常: Eclipse:Oxygen.3A释放版(4.7.3A) 在使用时,导入为: 在使用时,导入为: 在使用时,导入为: } pom.xml applicationContext.xml: xhtml:

  • 问题内容: 为什么在Java中(我不知道任何其他编程语言)标识符不能以数字开头,为什么也不允许以下声明? 问题答案: 通常,您将这种限制放入其中有两个原因: 用电子方式解析很痛苦。 对人类来说这是一个痛苦的解析。 考虑以下代码片段: 如果是合法标识符,那么末尾有哪个值?-3还是2?这是模棱两可的。 同时考虑: 最后有什么价值?这也是模棱两可的。 另外,以任何一种方式阅读都是很痛苦的。如果有人声明,

  • 我有一个Spring Boot应用程序,它使用原子作为事务管理器,我看到了这个日志: 错误:标识符为“1096044365_MTCYLJE3LJAUMY50BTAWDAYMDE=_MTYLJE3L JAUMY50BTQWMG=”的已准备事务不存在 连续打印。 在阅读了Atomicos文档后,我了解到Atomfos有一些崩溃恢复机制,我遵循了这个 http://fogbugz.atomikos.co

  • 问题内容: 有什么技巧可以将Java保留字用作变量,方法,类,接口,包或枚举常量名称? 问题答案: 不,没有办法。这就是为什么它们被标记为“保留”的原因。