如何将值从一个类对象保存到另一个类对象

时间:2012-11-23 15:02:20

标签: java hibernate struts2

我有两个类(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保存到Soldbookdetails.java。(请参阅我上面的ActionClass.java类,在execute方法中,我有提到ERRROR)。

在通过Bookid获取记录后,我无法将记录保存到我的Soldbookdetails.java

请帮我解决问题。

2 个答案:

答案 0 :(得分:0)

您的saveSoldbooks(Soldbookdetails s)方法将Soldbookdetails的对象作为参数,但您传递的是类Bookdetails的对象。

您可以做的是添加一个方法,将Bookdetails对象的属性复制到Soldbookdetails对象(没有id字段)。然后,您应该尝试使用现有方法保存Soldbookdetails的对象。

答案 1 :(得分:-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本身的逻辑)。