我有两个类(Pojos)名称CCD_ 1和CCD_,我想做的是,我必须从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
中。
请帮我解决我的问题。
您的saveSoldbooks(Soldbookdetails s)
方法将Soldbookdetails.java
0的对象作为参数,但您正在传递Bookdetails
类的对象。
您可以添加一个方法,将Bookdetails
对象的属性复制到Soldbookdetails
对象(没有id字段)。然后,您应该尝试使用现有方法保存Soldbookdetails
的对象。
虽然将已售出的书籍和书籍保存在单独的表中是(IMO)良好的性能问题,但我认为您不需要为它们创建单独的IDENTIAL类。考虑将您的类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和其他类型,可能会出现不同的逻辑,在这种情况下,这种"抽象"将简化维护。
我目前看到的对你保存SoldBook的唯一更改是更改它的参数类型或在方法体中提供类型检查,只要参数类型是BookDetails,你就可以在函数中传递从它派生的任何变量-因此,TraidingBookDetails、SoldBookDetails等。(所需的更改取决于你在这个方法中的逻辑和DAO本身)。