code for your 'deposit' method would work. Actually, you don't even
> Hi,
>
> I got past the above error but experiencing some strange results as follows.
>
> In the BankBean.java, I have the following method.
>
> *********
> public void deposit(int accountNumber, int amount) {
> Account account = manager.find(Account.class, accountNumber);
> account.balance += amount;
> System.out.println("New balance="+account.balance);
> System.out.println("Merging the account");
> manager.merge(account);
> }
> *********
>
> I have the Account.java as follows.
> **********************************************************************
> package sample.jpa;
>
> import java.io.Serializable;
>
> import javax.persistence.Entity;
> import javax.persistence.Id;
> import javax.persistence.NamedQuery;
> import javax.persistence.PostLoad;
> import javax.persistence.PostUpdate;
> import javax.persistence.PrePersist;
> import javax.persistence.PreUpdate;
> import javax.persistence.Version;
> import javax.persistence.Table;
>
> /**
> * This demo entity represents a Bank Account.
> * <p>
> * The entity is not a remote object and can only be accessed locally by
> * clients. However, it is made serializable so that instances can be passed
> by
> * value to remote clients for local inspection.
> * <p>
> * Access to persistent state is by direct field access.
> */
> @Entity
> @Table(name = "ACCOUNT")
> @NamedQuery(name="findThem", query="SELECT a FROM Account a")
> public class Account implements Serializable {
>
> /** The account number is the primary key for the persistent object */
> @Id
> public int accountNumber;
>
> public String ownerName;
>
> public int balance;
>
> @Version
> public int version;
>
> /**
> * Entity beans must have a public no-arg constructor
> */
> public Account() {
> // our own primary key generation, workaround for the
> // time being as persistence does not support
> // auto-generation
> accountNumber = (int) System.nanoTime();
> }
>
> public String toString() {
> return "Acc.# " + accountNumber + ", owner" + ownerName + ",
> balance: " + balance
> + " $";
> }
>
> @PrePersist
> void prepersist() {
> System.out.println("pre persist!!");
> }
>
> @PreUpdate
> void preupdate() {
> System.out.println("pre update!!");
> }
>
> @PostUpdate
> void postupdate() {
> System.out.println("post update!!");
> }
>
> @PostLoad
> void postload() {
> System.out.println("post load!!");
> }
>
> }
> **********************************************************************
>
> In the servlet I have the following code
>
> **********************************************************************
>
> bank = (Bank)ctx.lookup("BankBeanRemote");
> account =
> bank.findAccount(Integer.parseInt(request.getParameter("accNo")));
>
> out.println("account Number =
> "+account.accountNumber+"<br/>");
> out.println("ownerName = "+account.ownerName+"<br/>");
> out.println("balance = "+account.balance+"<br/>");
> out.println("version = "+account.version+"<br/>");
>
>
> accountNumber = account.accountNumber;
>
> out.println("Depositing Rs.100"+"<br/>");
>
> bank.deposit(accountNumber,100);
>
> **********************************************************************
>
> When I run the servlet, it is able to load the account values from the
> "account =
> bank.findAccount(Integer.parseInt(request.getParameter("accNo")));"
> statement. However, the "bank.deposit(accountNumber,100);" is not updating
> the "balance" field.
>
> What is the problem?? I have the following persistence.xml file
> *****************************************************************************************************
> <?xml version="1.0" encoding="UTF-8"?>
> <persistence xmlns="
http://java.sun.com/xml/ns/persistence"
> xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
> version="1.0"
> xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence>
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
> <persistence-unit name="BankPU">
> <description>Bank example</description>
>
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> <class>sample.jpa.Account</class>
> <properties>
> <property name="openjpa.ConnectionURL" value="jdbc:derby:BankDB"
> />
> <property name="openjpa.ConnectionDriverName"
> value="org.apache.derby.jdbc.EmbeddedDriver" />
> <property name="ConnectionUserName" value="app" />
> <property name="openjpa.jdbc.SynchronizeMappings" value="false"
> />
> </properties>
> </persistence-unit>
> <!--
> <jta-data-source>PhoneBookPool</jta-data-source>
> <non-jta-data-source>PhoneBookPool</non-jta-data-source>
> -->
> </persistence>
>
> **********************************************************************************************************
>
> On Wed, May 7, 2008 at 10:52 AM, Phani Madgula <
>
phanibalaji.madgula@...> wrote:
>
>> Hi,
>>
>> I have an EJB application using JPA and a web application looking up ejbs
>> in EJB application. I am able to deploy both the applications on AG2.1
>> server. But when I hit the servlet, I get the following error in the
>> console.
>> *****
>> Message: The bean encountered a non-application exception.; nested
>> exception is:
>>
>> <openjpa-1.0.1-r420667:592145 fatal user error>
>> org.apache.openjpa.persi
>> stence.ArgumentException: Could not locate metadata for the class using
>> alias "A
>> ccount". This could mean that the OpenJPA enhancer or load-time weaver was
>> not r
>> un on the type whose alias is "Account". Registered alias mappings:
>> "{Account=nu
>> ll}"
>> *****
>>
>> The ejb app is attached to mail. Any suggestions on what is missing here??
>>
>> Thanks
>> Phani
>>
>