在问题的上下文中,Category表有两行映射到Stock。但是当我应用下面的逻辑时,我只得到一行结果。
要解决这个问题,我想知道如何将对象属性复制到同一个类的新创建的对象中? 这样新创建的对象就会拥有旧对象的数据。
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:2
Category Name:INVESTMENT
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:1
Category Name:CONSUMER
Stock ID: 1
Stock Name: PADINI
Stock Code: 7052
Category Id:2
Category Name:INVESTMENT
答案 0 :(得分:1)
答案 1 :(得分:0)
如果你只想将一个对象的属性复制到另一个对象,那么可以使用java.lang包中可用的java的object.clone方法...它会将所有属性复制到新实例化的...
答案 2 :(得分:0)
在逻辑代码中,我看到你试图从股票中获取类别:
Set<Category> categories = stock.getCategories();
之后你还将类别设置为股票:
stock.setCategoryId(category.getCategoryId());
==&GT;你最好重新设计你的应用程序。
关于你的问题:
要解决这个问题,我想知道如何将对象属性复制到新的 创建同一类的对象?这样新创建的对象就会出现 有旧对象的数据。
Java lang Object有一个方法java.lang.Object.clone(),这可能会有所帮助。