최근에 온라인 쇼핑몰 프로젝트를 작성할 때 문제가 발생했습니다. Save () 또는 update () 메소드를 실행 한 후 최대 절전 모드에 영향을 미치지 않았으며 데이터베이스에 변경 사항이 없었으며 콘솔은 오류를보고하지 않았으므로 음성이 없었습니다.
나는 온라인에서 확인했고 일부 사람들은 그것이 기본 키의 자체 성장 문제라고 말했고, 어떤 사람들은 거래가 시작되지 않았다고 말했기 때문에 데이터베이스를 작성하거나 업데이트하는 것은 불가능했습니다. 나는 그들의 분석을 자세히 읽었고 모든 것이 합리적이지만, 이러한 솔루션은 나에게 효과가 없었습니다. 내 주요 키에는 문제가없고 트랜잭션은 Spring에 의해 관리되며 다른 저장 작업에서는 괜찮지 만 문제가 없습니다.
객관적으로 문제가 없기 때문에 특정 객체에 집중하여 저장하거나 업데이트하고 Pojo를 신중하게 분석했습니다. 먼저 저장할 객체의 해당 데이터베이스의 테이블을 살펴 보겠습니다.
/*===================================================================================== =================================================================================== 테이블 제품 생성 ( /* 제품 번호, 자동 성장* /id int 기본 키 NOL NULL AUTO_INCREMENT, /* 제품 이름* /이름 varchar (50), /* 제품 가격* /Price Decimal (8,2), /* 제품 사진* /Pic Varchar (300), /* 제품 간단한 소개* /비고 Longtext, /* 제품 세부 사항* /XREMARK DEFRAGENT, /* 제품 제작 날짜* /DATEMART DEFRAGEN 권장 제품이든 상관없이 Mall */ Comment Bool의 홈페이지에 표시 될 수 있습니다./ *유효한 제품이든 Mall의 홈페이지에 표시 될 수 있습니다./ Open Bool,/ *제품의 범주 번호는 */ cid int, CID_FK 외국 키 (CID) 참조 (ID));
그러면 특정 pojo는 게시되지 않지만 필드 속성을 사용 하고이 표를 기반으로 설정 및 메소드를 생성합니다. 문제가있을 가능성이 가장 높은 필드는 이번 시간이되어야한다고 생각하므로 Pojo의 날짜에 대한 코드를 살펴 보았습니다.
@entity public class product는 java.io.serializable을 구현합니다. {// private timestamp 날짜; // 다른 관련없는 코드를 생략 ... @column (name = "date", nullable = false, length = 19) public timestamp getDate () {return this.Date; } public void setDate (timestamp date) {this.date = date; }} 그래서이 타임 스탬프를 다시 검색하여 문제가 여기에 있다는 것을 알았습니다. 타임 스탬프를 java.util.date로 변경했습니다. 그런 다음 날짜 객체가 전달되고 최대 절전 모드는 자동으로 타임 스탬프 유형으로 변환됩니다.
이 문제는 또한 계시를 제공합니다. 데이터베이스 작업을 수행 할 수 없다는 것은 객체 자체에 문제가 될 수 있으며 테이블 필드와 Pojo 속성 사이에서 문제를 해결해야합니다.
원본 링크 : http://blog.csdn.net/eson_15/article/details/51383298
위의 내용은이 기사에 관한 모든 것입니다. 모든 사람의 학습에 도움이되기를 바랍니다.