我有以下問題,問題是我有一個物體:
package com.innovart.cpve.user.persistence.entity;
import lombok.Data;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@Data
@Table(name = "CPVE_USERS")
public class User {
@Id
@Column(name = "IDUSERS")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long idUser;
@Column(name = "IDROLES")
private Long idRol;
@Column(name = "USERNAME")
private String username;
@Column(name = "EMAIL")
private String email;
@Column(name = "PHONE")
private String phone;
@Column(name = "NAME")
private String name;
@Column(name = "LAST_NAME")
private String lastName;
@Column(name = "PASSWORD")
private String password;
@Column(name = "COUNTRY")
private String country;
@Column(name = "CITY")
private String city;
@Column(name = "GRANTS")
private String grant;
@Column(name = "STATE_ACTIVE")
private Integer stateActive;
@Column(name = "REGISTRATION_DATE")
private LocalDateTime registrationDate;
}
問題是這個后端連接到一個 Oracle 資料庫,其中我已經有一些注冊用戶,但是這些是通過 Mockaroo 腳本輸入的,當我嘗試通過服務 Rest 保存新用戶時,會拋出這個錯誤:
2021-12-22 11:03:53.156 ERROR 23148 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[.
[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context
with path [/api] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause
oracle.jdbc.OracleDatabaseException: ORA-01400: cannot insert NULL into ("CPVE"."CPVE_USERS"."IDUSERS")
當然,我明白問題是因為我已經創建了記錄,Spring 會嘗試創建一個新用戶,但它并不“知道”它必須從 PK 500 開始。
難不成Spring有什么辦法可以自動知道用戶PK去哪的資料,繼續嗎?
uj5u.com熱心網友回復:
這看起來像欄位 idUser 為空。確保的一種方法是在插入之前將 Use.idUser 設定為某個值以查看問題是否再次發生
uj5u.com熱心網友回復:
問題是,當使用“ strategy = GenerationType.AUTO ”時,Hibernate 在我的 Oracle 資料庫中創建了一個名為 Hibernate_Sequence 的序列,它定義了“idUsers”的值,我決定在示例中創建自己的序列從我決定的值中獲取計數。
@Id
@Column(name = "IDUSERS")
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "sequence-generator"
)
@SequenceGenerator(
name = "sequence-generator",
sequenceName = "SEC_IDUSER",
initialValue = 501,
allocationSize=1
)
private Long idUser;
這就是我的物體代碼的外觀,現在它是否已經允許我保存新用戶。<3 <3 <3 <3 非常感謝大家。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/393250.html
下一篇:如何在Jpa存盤庫中創建地圖
