简体   繁体   中英

How it copy one object fields data to another object of the same class?

In the context of problem, Category table having two rows mapped to Stock. But When I apply below logic i am getting only one row entry in result.

To solve that i want to know how to copy an object properties to newly created object of the same class? So that newly created object will have the data of older object.

public class App {
    public static void main(String[] args) {
        System.out.println("Hibernate many to many (XML Mapping)");
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();

        try {
            List<Stock> stocksNew=new ArrayList<Stock>();
            List<Stock> stocks = session.createQuery("FROM Stock").list(); 

            for (Stock stock:stocks) {
                Set<Category> categories = stock.getCategories();

                if (categories.isEmpty())
                {
                    System.out.println("true");
                    stocksNew.add(stock);
                } 
                else
                {   
                    for (Iterator<Category> iterator2 = 
                        categories.iterator(); iterator2.hasNext();) {
                        Category category = (Category) iterator2.next();
                        stock.
                        stock.setCategoryId(category.getCategoryId());
                        stock.setName(category.getName());
                        stocksNew.add(stock);

                    }
                }   
            }

            for (Stock stock : stocksNew) {
                System.out.println("Stock ID: " + stock.getStockId()); 
                System.out.println("Stock Name: " + stock.getStockName()); 
                System.out.println("Stock  Code: " + stock.getStockCode()); 
                System.out.println("Category Id:"+stock.getCategoryId());
                System.out.println("Category Name:"+stock.getName());
            }


        } catch (HibernateException e) {
            e.printStackTrace(); 
        } finally {
            session.close(); 
        }
    }

}

Output

Stock ID: 1
Stock Name: PADINI
Stock  Code: 7052
Category Id:2
Category Name:INVESTMENT
Stock ID: 1
Stock Name: PADINI
Stock  Code: 7052
Category Id:2
Category Name:INVESTMENT

I am getting the above output, but in my requirement output should come in the fallowing manner

Stock ID: 1
Stock Name: PADINI
Stock  Code: 7052
Category Id:1
Category Name:CONSUMER
Stock ID: 1
Stock Name: PADINI
Stock  Code: 7052
Category Id:2
Category Name:INVESTMENT

For copying properties from one Java object to another I'd advise you to have a look at Java bean mappers like orika or Dozer . They can save you a lot of code and can automate this task pretty well.

如果只想将一个对象的属性复制到另一个对象,则可以使用java.lang包中可用的java的object.clone方法。它将所有属性复制到新实例化的属性中。

In the logic code, I see that you try to get Categories from Stocks:

Set<Category> categories = stock.getCategories();

after that you also set Categories to Stocks:

stock.setCategoryId(category.getCategoryId());

==> You'd better re-design your application.


Regarding this your question:

To solve that i want to know how to copy an object properties to newly created object of the same class? So that newly created object will have the data of older object.

Java lang Object has a method java.lang.Object.clone(), which may help.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM