2012-11-23 175 views
1

我有两个类(POJO)中的名称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类,在执行方法内部,我提到了ERRROR)。

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

请帮我解决我的问题。

+1

请不要在这里发布巨大的代码。发布特定问题 – Max

+0

@Max I更新.. –

回答

0

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

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

+0

谢谢Sazzadur Ra​​haman。我知道这个解决方案。我可以做这个。但我想解决我的问题,正如我上面所述。我想学习新事物。 –

+0

如果要将Bookdetails的对象保存到SoldBookdetails表中。您没有其他选择来创建SoldBookdetails类的单独对象并将属性复制到它,因为hibernate不知道您的Bookdetails对象具有将其保存为soldBookdeils的所有信息。您必须明确创建一个soldBookdetails类的对象,以将其保存在您的表中以获得已售出的书籍(无ID)。无论你从哪里获取信息来创建该对象... :) –

+0

你可以分享评论作为代码..我毫不怀疑如何在代码中写如你所说的**你必须明确地创建一个soldBookdetails类的对象来保存它在你的表中为soldBookdetails(没有一个id)。无论从哪里汇总信息来创建该对象** –

-1

虽然保持出售书籍和书籍分开表是(IMO)良好的perfomance问题,我认为你不需要为他们创建分离的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 
} 

虽然目前你的类是相同的,在未来你可能会决定创建他人预定类型(如其他表和类采购书籍以存储或书本的方式提供给客户),当然,对于SoldBook和其他人可能会出现不同的逻辑,在这种情况下,这种“抽象”将简化维护。

您对saveSoldBook的唯一更改我目前看到的是更改它的参数类型或在方法体中提供类型检查,只要参数类型是BookDetails,就可以在函数中传递任何变量,因此,TraidingBookDetails,SoldBookDetails等(需要更改取决于你在这个方法和DAO本身的逻辑)。

+0

BookDetails是管理员主表,他可以在其中编辑/删除记录。 SoldBooks表是销售图书记录在发票生成后保留的表格。 Advantange:如果管理员从BookDetails表中删除/记录,那么它不会影响SoldBooks表的记录。管理员可以很容易地找出他的确切销售记录... –

+0

您继承的类将继承持久性注释,但它们将映射到继承的类中指定的表。例如,如果BookDetails具有ID和名称列,它们将显示在SoldBookDetails详细信息中。是的,它们将按照它们在BookDetails中映射的完全映射,但它们将分别引用SoldBooks.id和SoldBooks.name(只要SoldBookDetails映射到“SoldBooks”表)。在SoldBook中删除记录而不触及相同ID的机会将保留。 –

相关问题