1

我有两个类(Pojos)名称Soldbookdetails.javaBookdetails.java我想做的是,我必须从 Bookdetails 表(Soldbookdetails.java)中获取数据并将相同的数据保存到我的 Soldbookdetails 表(Soldbookdetails.java)中。

动作类.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.javaSoldbookdetails.java。(参见我上面的ActionClass.java类,在执行方法中,我提到了错误)。

通过 Bookid 获得记录后,我无法将记录保存到我的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 回答