Hibernate4 실행 save () 또는 update () 의 잘못된 문제를 해결하는 방법
제가 인터넷에서 찾아봤는데 어떤 사람은 메인 키의 자성장 문제라고 했고 어떤 사람은 사무를 열지 않아서 데이터베이스에 쓰거나 업데이트할 수 없다고 했습니다. 저는 그들의 분석을 자세히 봤는데 모두 일리가 있습니다. 그러나 이런 해결 방법은 저에게 도움이 되지 않습니다. 왜냐하면 제 메인 키는 문제가 없고 사무는 스프링이 관리하기 때문에 다른save에서 조작해도 괜찮고 문제가 없습니다.
객관적으로 문제가 없기 때문에 저는 구체적인save나 update의 대상에 초점을 맞췄습니다. POJO에 대해 자세하게 분석을 했습니다. 먼저save의 대상이 데이터베이스에 대응하는 표를 보겠습니다.
/*=============================*/
/* Table: */
/*=============================*/
create table product
(
/* , */
id int primary key not null auto_increment,
/* */
name varchar(50),
/* */
price decimal(8,2),
/* */
pic varchar(300),
/* */
remark longtext,
/* */
xremark longtext,
/* */
date timestamp default CURRENT_TIMESTAMP,
/* , */
commend bool,
/* , */
open bool,
/* */
cid int,
constraint cid_FK foreign key(cid) references category(id)
);
그리고 구체적인 POJO는 붙이지 않습니다. 바로 이 표에 따라 생성된 필드 속성과 set와 get 방법입니다.나는 가장 문제가 될 수 있는 필드가 바로 이 시간date라고 생각한다. 그래서 나는 POJO의 date에 관한 코드를 보았다.
@Entity
public class Product implements java.io.Serializable {
// Fields
private Timestamp date;
// ……
@Column(name = "date", nullable = false, length = 19)
public Timestamp getDate() {
return this.date;
}
public void setDate(Timestamp date) {
this.date = date;
}
}
그래서 나는 다시 인터넷에 접속하여 이 Timestamp를 검색했는데 문제가 바로 여기에 있다는 것을 발견하고 Timestamp를java로 바꾸었다.util.날짜를 입력하면 됩니다.그리고 Date 객체가 들어오면 Hibernate가 자동으로 Timestamp 유형으로 바뀝니다.이 문제도 나에게 시사점을 주었다. 데이터베이스 조작을 실행할 수 없는 것도 대상 자체의 문제일 수 있다. 표의 필드와 POJO 속성 사이에서 조사해야 한다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되기를 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.