Reputation: 11
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
Upvotes: 0
Views: 1559
Reputation: 19776
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.
Upvotes: 1
Reputation: 1
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.
Upvotes: 0
Reputation: 859
If you just want to copy one object's property to another then you can use object.clone method of java available in java.lang package... It will copy all the properties to the newly instantiated one...
Upvotes: 0