我有两个类(Pojos)名称Soldbookdetails.java
和Bookdetails.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
。
请帮我解决问题。
答案 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本身的逻辑)。