2012-11-23 2 views
1

다른 클래스 객체에 하나의 클래스 객체의 값을 저장하는 방법을, 나는 Bookdetails 테이블 (Soldbookdetails.java)에서 데이터를 얻을 수 및이를 저장해야 데이터를 내 Soldbookdetails 테이블 (Soldbookdetails.java)에 저장하십시오. ActionClass.java나는 두 개의 클래스 (POJO를) 이름 <code>Soldbookdetails.java</code>과 <code>Bookdetails.java</code>, 가 제가하고 싶은 것은이

private Double[] id;//With getter and setter 
private Double[] quantity; //With getter and setter 
Bookdetails book=new Bookdetails();//pojos,//With getter and setter 
Soldbookdetails sbook=new Soldbookdetails();//pojos,//With getter and setter 
BookdetailsDAO dao=new BookdetailsDAO(); 
SoldBooksTransactionDAO dao2=new SoldBooksTransactionDAO(); 
------------ 

(참고 : 내 모두 POJO는 같은 그들의 클래스 이름은 다른)

내 문제 : 나는 Bookdetails.java에서 기록을 저장할 수 없습니다입니다 (내 위의 ActionClass.java 클래스를 참조하십시오. execute 메서드 안에는 ERRROR가 있습니다).

Bookid에서 레코드를 가져온 후 레코드를 내 Soldbookdetails.java에 저장할 수 없습니다.

제발 내 문제를 해결하는 데 도움이됩니다.

+1

큰 코드는 여기에 게시하지 마십시오. 특정 문제 게시 – Max

+0

@Max I updated ... –

답변

0

saveSoldbooks(Soldbookdetails s) 메서드는 Soldbookdetails의 객체를 인수로 취하지 만 클래스 Bookdetails의 객체를 전달합니다.

Bookdetails 개체의 속성을 Soldbookdetails 개체 (id 필드 제외)에 복사하는 메서드를 추가 할 수 있습니다. 그런 다음 기존 방법을 사용하여 Soldbookdetails의 개체를 저장해야합니다.

+0

감사합니다. Sazzadur Rahaman. 이 해결책은 알고 있습니다. 나는 이것을 할 수있다. 하지만 내가 위에서 언급 한대로 내 문제를 해결하고 싶습니다. 나는 새로운 것을 배우고 싶다. –

+0

Bookdetails의 오브젝트를 SoldBookdetails 테이블에 저장하려는 경우. hibernate는 Bookdetails 객체가 soldBookdetails로 저장하기위한 모든 정보를 갖고 있기 때문에 SoldBookdetails 클래스의 개별 객체를 생성하고 그 객체에 속성을 복사하는 다른 옵션은 없다. soldBookdetails 클래스의 객체를 명시 적으로 만들어야 테이블에 id가없는 soldBookdetails를 저장할 수 있습니다. 아무리 당신이 그 객체를 만드는 정보를 얻을 수 있습니다 ... :) –

+0

코드로 주석을 공유 할 수 있습니까? 내가 말한대로 코드 작성 방법에 대해 의문의 여지가 없습니다 ** 명시 적으로 saveBookdetails 클래스의 개체를 저장해야합니다 soldBookdetails에 대한 귀하의 테이블 (ID없는). ** –

-1

판매 된 책과 책을 분리 된 테이블에 보관하는 것은 좋지만 (IMO) 좋은 성능 문제입니다. 분리 된 IDENTICAL 클래스를 만들 필요는 없습니다. MappedSuperclass로 추상이 클래스 BookDetails있어 제작 및 주석을 고려해

@MappedSuperclass 
public abstract class BookDetails{ 
    // fields 
    // getters 
    // setters 
} 

@Entity 
@Table(name="SoldBooks") 
public class SoldBookDetails extends BookDetails{ 
    // Currently blank 
} 


@Entity 
@Table(name="BookDetails") 
public class TradingBookDetails extends BookDetails{ 
    // Currently blank 
} 

현재 당신이있는 거 클래스가 동일하지만, 미래에 당신은 다른 사람들이 구입을 위해 다른 테이블과 같은 유형 (및 클래스를 예약 만들 결정할 수 있습니다 고객에게가는 장부 또는 서적), 물론 SoldBooks 및 다른 제품에 대해 다른 로직이 나타날 수 있습니다.이 경우 이러한 '추상화'는 유지 관리를 단순화합니다.

현재 saveSoldBook의 변경 사항은 인수 유형이 BookDetails 인 경우 인수 유형을 변경하거나 메소드 본문에서 유형 점검을 제공하는 것입니다. 변수를 전달할 수는 있지만, TraidingBookDetails, SoldBookDetails 등 (필요한 변경은이 메서드와 DAO 자체의 논리에 따라 달라집니다).

+0

BookDetails는 레코드를 편집/삭제할 수있는 관리자 마스터 테이블입니다. 그리고 SoldBooks 테이블은 판매 도서 기록이 송장 생성 후 보관되는 테이블입니다. Advantange : 관리자가 BookDetails 테이블에서 삭제/기록하면 SoldBooks 테이블의 레코드에 영향을 미치지 않습니다. 관리자는 정확한 매출 기록을 쉽게 찾을 수 있습니다 ... –

+0

상속 된 클래스는 지속성 주석을 상속하지만 상속 된 클래스에 지정된 테이블에 매핑됩니다. 예를 들어 BookDetails에 ID와 Name 열이 있으면 SoldBookDetails 세부 정보에 나타납니다. 예, BookDetails에 매핑 된대로 정확하게 매핑되지만 SoldBooks.id 및 SoldBooks.name을 각각 참조합니다 ('SoldBooks'테이블에 매핑 된 SoldBookDetails 인 경우).SoldBooks에서 동일한 ID를 건드리지 않고도 BookDetails에서 레코드를 삭제할 수 있습니다. –

관련 문제