You probably miss a transaction. Use an ejb for instance (@stateless) Le 20 déc. 2012 22:28, "avrono" <av...@neuralm.com> a écrit :
> Hi All, > > Newbie trying to experiment with JPA2 (openjpa - TomEE). I would appreciate > any pointers on where I might be going wrong with the example below .... > > I can read data from my Persistence-unit, but cannot write data (and no > error is generated) and I cannot see any generated SQL > > The only log output I get is as follows: > ============================= > > 25019 PRSX TRACE [http-bio-8080-exec-5] openjpa.jdbc.SQL - <t 25544092, > conn 20981618> executing prepstmnt 19451103 SELECT t0.bidEndDate, > t0.bidStartDate, t0.createdDate, t0.initialPrice, t0.name FROM item t0 > WHERE > t0.id = ? [params=?] > 25020 PRSX TRACE [http-bio-8080-exec-5] openjpa.jdbc.SQL - <t 25544092, > conn 20981618> [1 ms] spent > 25023 PRSX TRACE [http-bio-8080-exec-5] openjpa.jdbc.SQL - <t 25544092, > conn 8418899> executing prepstmnt 30955499 SELECT t0.credit_rating, > t0.user_id FROM bidder t0 WHERE t0.id = ? [params=?] > 25023 PRSX TRACE [http-bio-8080-exec-5] openjpa.jdbc.SQL - <t 25544092, > conn 8418899> [0 ms] spent > In add Bid : id = 0 bidStartDate = Thu Dec 20 21:12:24 GMT 2012 Initial > Price = 0.0 item_id = 0 item id from item is = 0 bidder_id = 1 > Trying to persist ! > 20-Dec-2012 21:12:24 org.apache.myfaces.renderkit.html.HtmlLabelRenderer > encodeBegin > WARNING: Attribute 'for' of label component with id j_id_3:j_id_5 is not > defined > > > My persistence.xml: > =============== > > <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> > > <persistence-unit name="PRSX" transaction-type="JTA" > > <jta-data-source>jdbc/testDB</jta-data-source> > <class>com.prsx.dao.item.Item</class> > > > <properties> > <property name="openjpa.jdbc.DBDictionary" value="mysql"/> > <property name="openjpa.jdbc.SynchronizeMappings" > value="buildSchema(ForeignKeys=true)"/> > <property name="openjpa.Log" value="DefaultLevel=WARN, > Runtime=INFO, Tool=INFO, SQL=TRACE"/> > </properties> > </persistence-unit> > </persistence> > > > ManagedBean: > ============= > > > > @ManagedBean(name = "itemAdderBean") > @RequestScoped > //@TransactionManagement(TransactionManagementType.BEAN) > public class ItemAdderBean { > > @Resource > private UserTransaction userTransaction; > > @PersistenceUnit(unitName="PRSX") > private EntityManagerFactory entityManagerFactory; > > /* > @PersistenceContext(unitName = "PRSX", type = > PersistenceContextType.TRANSACTION) > private EntityManagerFactory entityManagerFactory; > */ > @PersistenceContext > private EntityManager entityManager; > > private int id =0; > private Date bidDate = null; > private double bidPrice = 0; > private int item_id = 0; > private int bidder_id = 0; > > @SuppressWarnings("unused") > private List<Item> list; > private Item item; > > > > public ItemAdderBean() { > System.out.println("Constructor of ItemAdderBean Called > !"); > item = new Item(); > > } > > @SuppressWarnings("unchecked") > public List<Item> getList() throws Exception { > System.out.println("GetList of ItemAdderBean Called !"); > Query query = entityManager.createQuery("Select i from > Item i"); > System.out.println("GetList of ItemAdderBean Called - > returning !"); > return query.getResultList(); > } > > public Item getItem() { > return item; > } > > public void setItem(Item item) { > this.item = item; > } > > /* Getter / Setter */ > public int getId() { > return this.id; > } > > public void setId(int id) { > this.id = id; > } > > public Date getBidDate() { > return this.bidDate; > } > > public void setBidDate(Date bidDate) { > this.bidDate = bidDate; > } > > public double getBidPrice() { > return this.bidPrice; > } > > public void setBidPrice(double bidPrice) { > this.bidPrice = bidPrice; > } > > public int getItem_id() { > return this.item_id; > } > > public void setItem_id(int item_id) { > this.item_id = item_id; > } > > public int getBidder_id() { > return this.bidder_id; > } > > public void setBidder_id(int bidder_id) { > this.bidder_id = bidder_id; > } > > > > public String addBid() { > > System.out.println("Add Called !"); > > Bid bids = new Bid(); > bids.setId(this.id); > bids.setBidDate(this.bidDate); > bids.setBidPrice(this.bidPrice); > > Item theItem = entityManager.find(Item.class, > this.item_id); > bids.setItem(theItem); > > /* Just set bidder to 0 */ > Bidder theBidder = entityManager.find(Bidder.class, 1); > bids.setBidder(theBidder); > > String output = "In add Bid : id = " + this.id + > " bidStartDate = " + this.bidDate + > " Initial Price = " + this.bidPrice + > " item_id = " + this.item_id + > " item id from item is = " + > this.item.getId() + > " bidder_id = " + this.bidder_id; > > System.out.println(output); > > //try { > //userTransaction = (UserTransaction)new > InitialContext().lookup("java:comp/UserTransaction"); > //} catch (NamingException e) { > // TODO Auto-generated catch block > //e.printStackTrace(); > //} > > //EntityTransaction entityTransaction = > entityManager.getTransaction(); > > /* persist the bid */ > //entityTransaction.begin(); > try { > userTransaction.begin(); > System.out.println("Trying to persist !"); > entityManager.persist(bids); > userTransaction.commit(); > } catch(Exception ex) { > ex.printStackTrace(); > } > //entityTransaction.commit(); > > return "addBid"; > } > > public String reset (){ > > this.id=0; > this.bidDate = null; > this.bidPrice = 0; > this.item_id = 0; > this.bidder_id = 0; > return "reset"; > } > > @PostConstruct > public void init() { > > this.entityManager = > entityManagerFactory.createEntityManager(); > /* Just make the dates NOW and NOW+14 days */ > Calendar today = Calendar.getInstance(); > this.bidDate = new java.util.Date(today.getTimeInMillis()); > } > } > > > And Entity: > ========= > @Entity > @Table(name="bids") > public class Bid implements Serializable { > private static final long serialVersionUID = 1L; > > @Id > @Column(name="id") > @GeneratedValue(strategy = GenerationType.IDENTITY) > private int id; > > @Temporal( TemporalType.DATE) > private Date bidDate; > > private double bidPrice; > > //bi-directional many-to-one association to Bidder > @ManyToOne > private Bidder bidder; > > //bi-directional many-to-one association to Item > @ManyToOne > private Item item; > > public Bid() { > } > > public int getId() { > return this.id; > } > > public void setId(int id) { > this.id = id; > } > > public Date getBidDate() { > return this.bidDate; > } > > public void setBidDate(Date bidDate) { > this.bidDate = bidDate; > } > > public double getBidPrice() { > return this.bidPrice; > } > > public void setBidPrice(double bidPrice) { > this.bidPrice = bidPrice; > } > > public Bidder getBidder() { > return this.bidder; > } > > public void setBidder(Bidder bidder) { > this.bidder = bidder; > } > > public Item getItem() { > return this.item; > } > > public void setItem(Item item) { > this.item = item; > } > > } > > > > > > -- > View this message in context: > http://openejb.979440.n4.nabble.com/Help-with-JPA-Entity-Persist-tp4659865.html > Sent from the OpenEJB User mailing list archive at Nabble.com. >