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