Hibernate4 실행 save () 또는 update () 의 잘못된 문제를 해결하는 방법

2022 단어 Hibernatesaveupdate
최근 인터넷 쇼핑몰 프로젝트를 쓸 때 문제가 하나 생겼다. Hibernate는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 속성 사이에서 조사해야 한다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기