Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 它如何将一个对象字段数据复制到同一类的另一个对象?_Java_Hibernate - Fatal编程技术网

Java 它如何将一个对象字段数据复制到同一类的另一个对象?

Java 它如何将一个对象字段数据复制到同一类的另一个对象?,java,hibernate,Java,Hibernate,在这个问题的上下文中,有两行映射到Stock的Category表。但当我应用下面的逻辑时,结果中只有一行条目 为了解决这个问题,我想知道如何将对象属性复制到同一类的新创建对象? 这样新创建的对象将具有旧对象的数据 public class App { public static void main(String[] args) { System.out.println("Hibernate many to many (XML Mapping)"); Ses

在这个问题的上下文中,有两行映射到Stock的Category表。但当我应用下面的逻辑时,结果中只有一行条目

为了解决这个问题,我想知道如何将对象属性复制到同一类的新创建对象? 这样新创建的对象将具有旧对象的数据

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(); 
        }
    }

}
我得到了上面的输出,但是在我的需求中,输出应该以休闲的方式出现

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

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

在逻辑代码中,我看到您试图从股票中获取类别:

Set<Category> categories = stock.getCategories();
==>您最好重新设计应用程序


关于这一点,请回答你的问题:

为了解决这个问题,我想知道如何将对象属性复制到 是否创建了同一类的对象?这样新创建的对象将 拥有旧对象的数据

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(); 
        }
    }

}

Java lang对象有一个方法Java.lang.Object.clone(),这可能会有所帮助。

要将属性从一个Java对象复制到另一个Java对象,我建议您看看Java bean映射程序,如或。它们可以为您节省大量代码,并且可以很好地自动化此任务。

好的。看起来像是添加了重复输出。注释已删除。因为我通过简单的查询从库存中获取多对多关系的数据。虽然它设置了类别,因为我需要类别的值。所以,我在Stock类中声明Category类的字段。我在Stock类中通过读取集合来设置这些属性。
stock.setCategoryId(category.getCategoryId());