I cannot get the persistence manager to persist the objects in the following 
code. No exception is thrown (on persist), the objects are simply not persisted.


  | @Stateless
  | public class SRSFacadeBean implements SRSFacade{
  | 
  |     @PersistenceContext (unitName="srsentity")
  | 
  | 
  | ......
  | 
  | 
  | public void createShip(DynaBean db) throws DelegateException
  | {
  |     createEntity();
  |     Ship ship = new Ship();
  |     String imo = (String) db.get("imo");
  |     ship.setImo(imo);
  | 
  |     DynaProperty dp[] = db.getDynaClass().getDynaProperties();
  |     long currenttime = Calendar.getInstance().getTimeInMillis();
  | 
  |     ArrayList<Attribute> ala = new ArrayList<Attribute>();
  | 
  |     for(DynaProperty dpp: dp)
  |     {
  |             String nm = dpp.getName();
  | 
  |             if(!nm.equals("imo"))
  |             {
  |                     Attribute attribute = new Attribute();
  |                     String vl = (String) db.get(nm);
  | 
  |                     //get attribute name
  |                     AttributeName attributename = null;
  |                     try
  |                     {
  |                             attributename = (AttributeName) 
manager.createQuery("from AttributeName ana where ana.name = 
?1").setParameter(1, nm).getSingleResult();
  |                     }
  |                     catch(NoResultException e)
  |                     {
  |                             log.info("AttributeName not found, creating:" + 
nm);
  |                             attributename = new AttributeName();
  |                             attributename.setName(nm);
  |                     }
  |                     catch(Exception e)
  |                     {
  |                             log.debug("Multiple AttributeNames (" + nm + ") 
found, database integrity must be reestablished");
  |                             e.printStackTrace();
  |                             //TODO: Reestablish database integrity!
  |                     }
  | 
  |                     //set attribute to attributename mapping + vice versa
  |                     attribute.setNameid(attributename);
  |                     attributename.getAttr().add(attribute);
  | 
  |                     //set values
  |                     attribute.setValue(vl);
  |                     attribute.setStartdate(currenttime);
  |                     attribute.setEnddate(-1);
  |                     attribute.setShip(ship);
  |                     ala.add(attribute);
  |                     manager.persist(attributename);
  |                     manager.persist(attribute);
  |             }
  |     }
  |     ship.setAttributes(ala);
  |     manager.persist(ship);
  | }
  | 
  | 
  | public void createEntity()
  | {
  |     AnEntityBean aeb = new AnEntityBean();
  |     aeb.setTotal(111111111);
  |     manager.persist(aeb);
  | 
  | }
  | 
  | }
  | 
  | 

persistence.xml


  | <persistence>
  |    <persistence-unit name="srsentity">
  |        <jta-data-source>java:/MySqlDS</jta-data-source>
  | 
  |        <properties>
  |             <property name="hibernate.dialect" 
value="org.hibernate.dialect.MySQLDialect"/>
  |             <property name="hibernate.hbm2ddl.auto" value="update"/>
  |        </properties>
  |    </persistence-unit>
  | </persistence>


The bizarre thing is that if my test method, createEntity() is called from 
outside the Bean, it works fine and AnEntityBean is persisted to the database.
If I call it from within this class (as I have at the top of createShip(), it 
doesn't persist AnEntityBean.

Ship, Attribute and AttributeName are all standard entities mapped to tables, 
futher code can be posted as required.

This code falls over because each instance of AttributeName is never persisted, 
therefore the query returns null.

Help would be very much appreciated as I feel I'm tired of banging my head 
against the proverbial brick wall!




View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3926074#3926074

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3926074


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to