This is my first post. I am trying s sample where I have onetomany relationship
Code:
CREATE TABLE stock ( 
    STOCK_ID     int(10) AUTO_INCREMENT NOT NULL,
    STOCK_CODE   varchar(10) NOT NULL,
    STOCK_NAME   varchar(20) NOT NULL,
    PRIMARY KEY(STOCK_ID)
)
CREATE TABLE stock_daily_record ( 
    RECORD_ID      int(10) AUTO_INCREMENT NOT NULL,
    PRICE_OPEN     float NULL,
    PRICE_CLOSE    float NULL,
    PRICE_CHANGE   float NULL,
    VOLUME         bigint(20) NULL,
    DATE           date NOT NULL,
    STOCK_ID       int(10) NOT NULL,
    PRIMARY KEY(RECORD_ID),
   FOREIGN KEY(STOCK_ID) REFERENCES STOCK(STOCK_ID)
)
//Stock.java
   .....
   @OneToMany(fetch = FetchType.EAGER, mappedBy = "stock",cascade=CascadeType.ALL)    
   @JoinColumn(name = "STOCK_ID")
       @Cascade({ org.hibernate.annotations.CascadeType.ALL, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
   public Set<StockDailyRecord> getStockDailyRecords() {
      return stockDailyRecords;
   }
//StockDailyRecord.java
.....
      @ManyToOne(fetch = FetchType.EAGER)
       @JoinColumn(name="STOCK_ID")   
   public Stock getStock() {
      return this.stock;
       }
//StockDAOTest.java
//I am trying to first delete 2 records in Stock_daily_reocord associated with a stock[CHILD DELETE] and then associate a new stock daily reocord with that stock[UPDATE] 
@Test
   public void update() {
      Set<StockDailyRecord> records = new HashSet<StockDailyRecord>(0);
      Stock stock = new Stock();
      Integer stockId = new Integer(59);
      int MILLIS_IN_DAY = 1000 * 60 * 60 * 24;
      Date currentDate = new Date();
      int year = currentDate.getYear();
      int month = currentDate.getMonth();
      int date = currentDate.getDay();
      GregorianCalendar oneWeek = new GregorianCalendar(year, month, date);
      oneWeek.add(GregorianCalendar.DATE, 8);
      Date date2 = oneWeek.getTime();
      stock.setStockId(stockId);
      Stock foundStock = (Stock) stockDao.findById(stockId);
      System.out.println("After found stock is " + foundStock);
      
      
      Set<StockDailyRecord> foundRecords = foundStock.getStockDailyRecords();   
      Iterator iter = foundRecords.iterator();
      
      
      
     for (Iterator i = foundRecords.iterator(); i.hasNext(); ){
          StockDailyRecord foundRecord = (StockDailyRecord) i.next();
          System.out.println("Deleting foundRecord= " + foundRecord);       
          stockDailyRecordDAO.delete(foundRecord);
          System.out.println("Deleted foundRecord= " + foundRecord);
       }
       
       
     
   
        //Update Stock
        foundStock.setStockCode("1111");
      System.out.println("After deleting StockDailyRecords found stock is " );
      System.out.println( foundStock);
      System.out.println("After deleting StockDailyRecords size is " );
      System.out.println( foundRecords.size());
      StockDailyRecord stockDailyRecord = new StockDailyRecord();
      stockDailyRecord.setPriceOpen(new Float("7.2"));
      stockDailyRecord.setPriceClose(new Float("7.2"));
      stockDailyRecord.setPriceChange(new Float("7.2"));
      stockDailyRecord.setVolume(2000000L);
      stockDailyRecord.setDate(date2);
      stockDailyRecord.setStock(foundStock);
      //foundRecords = foundStock.getStockDailyRecords();   
      foundRecords.add(stockDailyRecord);
      System.out.println("After updating StockDailyRecords size is " );
      System.out.println( foundRecords.size());
      
      //stockDailyRecordDAO.save(stockDailyRecord);
      System.out.println("Updating stock with stockDailyRecord==" + stockDailyRecord);
      foundStock.setStockDailyRecords(foundRecords);
      System.out.println("Updating stock==" + foundStock);
      stockDao.update(foundStock);
   }
   }
Issue:
The code does not semm to be deleting child records. I see that it dies inside for loop and it does not even iterate after first record. All I see is the message" Closing JPA EntityManagerFactory for persistence unit " after first iteration.Here is the log:
Code:
05:14:49,192  INFO SessionFactoryObjectFactory:105 - Not binding factory to JNDI, no JNDI name configured
05:14:49,442  INFO StockDAO:161 - finding Stock instance with id: 59
05:14:49,520  INFO StockDAO:164 - found Stock instance with id: 59
After found stock is Stock [stockCode=1111, stockId=59, stockName=HENM]
Deleting foundRecord= StockDailyRecord [date=0110-08-09, priceChange=6.2, priceClose=6.2, priceOpen=6.2, recordId=6, stock=Stock [stockCode=1111, stockId=59, stockName=HENM], volume=2000000]
05:14:49,551  INFO StockDailyRecordDAO:107 - deleting StockDailyRecord instance StockDailyRecord [date=0110-08-09, priceChange=6.2, priceClose=6.2, priceOpen=6.2, recordId=6, stock=Stock [stockCode=1111, stockId=59, stockName=HENM], volume=2000000]
05:14:49,567  INFO StockDailyRecordDAO:112 - delete successfulStockDailyRecord [date=0110-08-09, priceChange=6.2, priceClose=6.2, priceOpen=6.2, recordId=6, stock=Stock [stockCode=1111, stockId=59, stockName=HENM], volume=2000000]
05:14:49,598  INFO GenericApplicationContext:978 - Closing org.springframework.context.support.GenericApplicationContext@1d332b: startup date [Mon Aug 02 05:14:47 PDT 2010]; root of context hierarchy
05:14:49,598  INFO DefaultListableBeanFactory:421 - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@15e234c: defining beans [entityManagerFactory,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,StockDailyRecordDAO,StockDAO,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor]; root of factory hierarchy
05:14:49,598  INFO LocalEntityManagerFactoryBean:406 - Closing JPA EntityManagerFactory for persistence unit 'HibernateAnnotationExamplePU'
05:14:49,598  INFO SessionFactoryImpl:853 - closing