1

私は 2 つのクラス (Pojos) 名Soldbookdetails.javaBookdetails.java持っています。私がしたいことは、Bookdetails テーブル ( ) からデータを取得Soldbookdetails.javaし、同じデータを Soldbookdetails テーブル ( ) に保存することSoldbookdetails.javaです。

ActionClass.java

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: レコードを からに保存できません( execute メソッド内のSoldbookdetails.java上記のクラスを参照してください。エラーについて言及しています)。ActionClass.java

Bookid でレコードを取得した後、レコードを my に保存できませんSoldbookdetails.java

私の問題を解決するのを手伝ってください。

4

2 に答える 2

0

メソッドsaveSoldbooks(Soldbookdetails s)は のオブジェクトをSoldbookdetails引数として取りますが、 class のオブジェクトを渡していますBookdetails

できることは、Bookdetailsオブジェクトの属性をSoldbookdetails(id フィールドなしで) オブジェクトにコピーするメソッドを追加できることです。Soldbookdetails次に、既存のメソッドを使用してオブジェクトを保存しようとする必要があります。

于 2012-11-23T15:29:25.950 に答える
-1

販売された本と本を別々のテーブルに保管することは(IMO)優れたパフォーマンスの問題ですが、それらのために別々のIDENTICALクラスを作成する必要はないと思います。BookDetailsクラスを抽象化し、MappedSuperclassとして注釈を付けることを検討してください。

@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自体によって異なります)。

于 2012-11-23T15:26:56.327 に答える