[JBoss JIRA] Created: (EJBTHREE-722) can get a entity with entity relation to a superclass of a joined-inheritance
by Haohua xie (JIRA)
can get a entity with entity relation to a superclass of a joined-inheritance
------------------------------------------------------------------------------
Key: EJBTHREE-722
URL: http://jira.jboss.com/jira/browse/EJBTHREE-722
Project: EJB 3.0
Issue Type: Bug
Affects Versions: EJB 3.0 RC9 - FD
Environment: jboss.4.0.4GA EJB 3.0 RC9-FD JDK 1.5.0_08
Reporter: Haohua xie
use the ejb3 tutorial of joininheritance as the template . i did not chanage any code of Pet.java Cat.java Dog.java.i just add some functions to PetDao and PetDAOBean
i write a entity, Decorate, referring to Pet. i can insert a entity of Decorate into the database but when i try to get out the entities of Decorate from the database, some exception happens.
i also try the codes on jboss.4.0.4GA EJB 3.0 RC8-FD JDK 1.5.0_08. it works well and i got the result:
[java] Sox
[java] Junior
[java] Test
[java] Test2
Decorate.java
package org.jboss.tutorial.joininheritance.bean;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class Decorate implements java.io.Serializable{
private int id;
private String name;
private Pet pet;
public Decorate() {
super();
}
@Id @GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public String getName() {
return name;
}
@OneToOne(fetch = FetchType.LAZY)
public Pet getPet() {
return pet;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPet(Pet pet) {
this.pet = pet;
}
}
PetDAO.java
package org.jboss.tutorial.joininheritance.bean;
import java.util.Collection;
import java.util.List;
public interface PetDAO
{
Dog createDog(String name, double weight, int bones);
Cat createCat(String name, double weight, int lives);
List findByWeight(double weight);
Decorate createDecorate(String name,Pet pet);
Collection getDecorate();
}
PetDAOBean.java
package org.jboss.tutorial.joininheritance.bean;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@Stateless
@Remote(PetDAO.class)
public class PetDAOBean implements PetDAO {
@PersistenceContext
private EntityManager manager;
public Dog createDog(String name, double weight, int bones) {
Dog dog = new Dog();
dog.setName(name);
dog.setWeight(weight);
dog.setNumBones(bones);
manager.persist(dog);
return dog;
}
public Cat createCat(String name, double weight, int lives) {
Cat cat = new Cat();
cat.setName(name);
cat.setWeight(weight);
cat.setLives(lives);
manager.persist(cat);
return cat;
}
public List findByWeight(double weight) {
return manager.createQuery(
"select p from Pet p where p.weight < :weight").setParameter(
"weight", weight).getResultList();
}
public Decorate createDecorate(String name, Pet pet) {
Decorate dec = new Decorate();
dec.setName(name);
dec.setPet(pet);
manager.persist(dec);
return dec;
}
public Collection getDecorate() {
Collection founds = new ArrayList();
Query query = manager.createQuery("SELECT o FROM Decorate o");
List list = query.getResultList();
for (Object obj : list) {
if (obj instanceof Decorate) {
founds.add((Decorate) obj);
}
}
return founds;
}
}
Client.java
public class Client {
public static void main(String[] args) throws Exception {
InitialContext ctx = new InitialContext();
PetDAO dao = (PetDAO) ctx.lookup("PetDAOBean/remote");
Pet p1 = dao.createCat("Toonses", 15.0, 9);
Pet p2 = dao.createCat("Sox", 10.0, 5);
Pet p3 = dao.createDog("Winnie", 70.0, 5);
Pet p4 = dao.createDog("Junior", 11.0, 1);
Decorate d1 = dao.createDecorate("Test", p1);
Decorate d2 = dao.createDecorate("Test2", p2);
List l = dao.findByWeight(14.0);
for (Object o : l) {
System.out.println(((Pet) o).getName());
}
Collection founds = dao.getDecorate(); //exception throws here
for (Decorate value : founds) {
System.out.println(value.getName());
}
}
}
Cat.java
package org.jboss.tutorial.joininheritance.bean;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Cat extends Pet
{
int lives;
public int getLives()
{
return lives;
}
public void setLives(int lives)
{
this.lives = lives;
}
}
Dog.java
package org.jboss.tutorial.joininheritance.bean;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Entity;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Dog extends Pet
{
private int numBones;
public int getNumBones()
{
return numBones;
}
public void setNumBones(int numBones)
{
this.numBones = numBones;
}
}
run:
[java] Sox
[java] Junior
[java] Exception in thread "main" java.lang.RuntimeException: org.jboss.tm.
JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=25
7, GlobalId=xhh/21, BranchQual=, localId=21] status=STATUS_NO_TRANSACTION; - nes
ted throwable: (javax.persistence.PersistenceException: org.hibernate.HibernateE
xception: instance not of expected entity type: org.jboss.tutorial.joininheritan
ce.bean.Pet_$$_javassist_10 is not a: org.jboss.tutorial.joininheritance.bean.Pe
t)
[java] at org.jboss.aspects.tx.TxPolicy.handleEndTransactionException(T
xPolicy.java:198)
[java] at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:18
0)
[java] at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
[java] at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxIntercep
tor.java:197)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropag
ationInterceptor.java:76)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(
StatelessInstanceInterceptor.java:62)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.aspects.security.AuthenticationInterceptor.invoke(A
uthenticationInterceptor.java:78)
[java] at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(
Ejb3AuthenticationInterceptor.java:131)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagatio
nInterceptor.java:47)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(As
ynchronousInterceptor.java:106)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(Sta
telessContainer.java:263)
[java] at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
[java] at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invok
e(AOPRemotingInvocationHandler.java:82)
[java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:82
8)
[java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:68
1)
[java] at org.jboss.remoting.transport.socket.ServerThread.processInvoc
ation(ServerThread.java:358)
[java] at org.jboss.remoting.transport.socket.ServerThread.dorun(Server
Thread.java:412)
[java] at org.jboss.remoting.transport.socket.ServerThread.run(ServerTh
read.java:239)
[java] Caused by: org.jboss.tm.JBossRollbackException: Unable to commit, tx
=TransactionImpl:XidImpl[FormatId=257, GlobalId=xhh/21, BranchQual=, localId=21]
status=STATUS_NO_TRANSACTION; - nested throwable: (javax.persistence.Persistenc
eException: org.hibernate.HibernateException: instance not of expected entity ty
pe: org.jboss.tutorial.joininheritance.bean.Pet_$$_javassist_10 is not a: org.jb
oss.tutorial.joininheritance.bean.Pet)
[java] at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:372)
[java] at org.jboss.tm.TxManager.commit(TxManager.java:240)
[java] at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:17
5)
[java] at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
[java] at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxIntercep
tor.java:197)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropag
ationInterceptor.java:76)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(
StatelessInstanceInterceptor.java:62)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.aspects.security.AuthenticationInterceptor.invoke(A
uthenticationInterceptor.java:78)
[java] at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(
Ejb3AuthenticationInterceptor.java:131)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagatio
nInterceptor.java:47)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(As
ynchronousInterceptor.java:106)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(Sta
telessContainer.java:263)
[java] at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
[java] at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invok
e(AOPRemotingInvocationHandler.java:82)
[java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:82
8)
[java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:68
1)
[java] at org.jboss.remoting.transport.socket.ServerThread.processInvoc
ation(ServerThread.java:358)
[java] at org.jboss.remoting.transport.socket.ServerThread.dorun(Server
Thread.java:412)
[java] at org.jboss.remoting.transport.socket.ServerThread.run(ServerTh
read.java:239)
[java] at org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInv
oker.java:190)
[java] at org.jboss.remoting.Client.invoke(Client.java:525)
[java] at org.jboss.remoting.Client.invoke(Client.java:488)
[java] at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(Inv
okeRemoteInterceptor.java:55)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(Cl
ientTxPropagationInterceptor.java:61)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.aspects.security.SecurityClientInterceptor.invoke(S
ecurityClientInterceptor.java:55)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInte
rceptor.java:77)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(Stateles
sRemoteProxy.java:102)
[java] at $Proxy0.getDecorate(Unknown Source)
[java] at org.jboss.tutorial.joininheritance.Client.Client.main(Client.
java:56)
[java] Caused by: javax.persistence.PersistenceException: org.hibernate.Hib
ernateException: instance not of expected entity type: org.jboss.tutorial.joinin
heritance.bean.Pet_$$_javassist_10 is not a: org.jboss.tutorial.joininheritance.
bean.Pet
[java] at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceE
xception(AbstractEntityManagerImpl.java:641)
[java] at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletio
n(AbstractEntityManagerImpl.java:524)
[java] at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionIm
pl.java:1491)
[java] at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.ja
va:1110)
[java] at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:324)
[java] at org.jboss.tm.TxManager.commit(TxManager.java:240)
[java] at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:17
5)
[java] at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
[java] at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxIntercep
tor.java:197)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropag
ationInterceptor.java:76)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(
StatelessInstanceInterceptor.java:62)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.aspects.security.AuthenticationInterceptor.invoke(A
uthenticationInterceptor.java:78)
[java] at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(
Ejb3AuthenticationInterceptor.java:131)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagatio
nInterceptor.java:47)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(As
ynchronousInterceptor.java:106)
[java] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInv
ocation.java:101)
[java] at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(Sta
telessContainer.java:263)
[java] at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
[java] at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invok
e(AOPRemotingInvocationHandler.java:82)
[java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:82
8)
[java] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:68
1)
[java] at org.jboss.remoting.transport.socket.ServerThread.processInvoc
ation(ServerThread.java:358)
[java] at org.jboss.remoting.transport.socket.ServerThread.dorun(Server
Thread.java:412)
[java] at org.jboss.remoting.transport.socket.ServerThread.run(ServerTh
read.java:239)
[java] Caused by: org.hibernate.HibernateException: instance not of expecte
d entity type: org.jboss.tutorial.joininheritance.bean.Pet_$$_javassist_10 is no
t a: org.jboss.tutorial.joininheritance.bean.Pet
[java] at org.hibernate.persister.entity.AbstractEntityPersister.getSub
classEntityPersister(AbstractEntityPersister.java:3568)
[java] at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl
.java:1347)
[java] at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java
:180)
[java] at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAct
ion.java:347)
[java] at org.hibernate.engine.Cascade.cascade(Cascade.java:139)
[java] at org.hibernate.event.def.AbstractFlushingEventListener.cascade
OnFlush(AbstractFlushingEventListener.java:130)
[java] at org.hibernate.event.def.AbstractFlushingEventListener.prepare
EntityFlushes(AbstractFlushingEventListener.java:121)
[java] at org.hibernate.event.def.AbstractFlushingEventListener.flushEv
erythingToExecutions(AbstractFlushingEventListener.java:65)
[java] at org.hibernate.event.def.DefaultFlushEventListener.onFlush(Def
aultFlushEventListener.java:26)
[java] at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
[java] at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:
338)
[java] at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletio
n(AbstractEntityManagerImpl.java:515)
[java] ... 27 more
[java] Java Result: 1
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 3 months
[JBoss JIRA] Created: (EJBTHREE-652) JPA Is Requiring That Entity Bean Name Matches Table Name for @NamedQuery
by Sascha Goldsmith (JIRA)
JPA Is Requiring That Entity Bean Name Matches Table Name for @NamedQuery
-------------------------------------------------------------------------
Key: EJBTHREE-652
URL: http://jira.jboss.com/jira/browse/EJBTHREE-652
Project: EJB 3.0
Issue Type: Bug
Components: EJB3 Extensions
Affects Versions: EJB 3.0 RC7 - FD
Environment: JBoss-AS 4.0.4-GA.
Reporter: Sascha Goldsmith
Priority: Minor
I created an entity bean with its own unique Java name. This differed from the actual table name. The following named query produces a org.hibernate.hql.ast.QuerySyntaxException when the bean is deployed:
@Entity (name="ErrorAuditRecord")
@Table (name="error_audit")
@NamedQueries ({
@NamedQuery (name="findAllErrors", query="SELECT o FROM ErrorAuditRecord o")
))
In order to get it to work, I am forced to name my Java POJO the same name as the table's name:
@Entity (name="Error_Eudit")
@Table (name="Error_Eudit")
@NamedQueries ({
@NamedQuery (name="findAllErrors", query="SELECT o FROM Error_Audit o")
))
This seems, to me, to be a bug for two reaons:
1) Why even have separate @Entity and @Table annotations (with name attributes) if the names cannot differ?
2) Devlopers are forced to name classes exactly like the table name, which produces 'ugly' Java class names (ok, minor point, but I feel it is valid)
Does a subsequent EJB 3.0 release support having named queries access via entity name rather than table name? (Or more properly, without forcing one to name the entity bean with the table's name)?
Best regards. You guys have done a great job with EJB 3.0 so far!
Saish
PS: Other users are having same issue with Hibernate as the JPA provider: http://forum.springframework.org/showthread.php?t=19737
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 3 months
[JBoss JIRA] Created: (JBAS-3729) Add alternate run-as mappings for container callbacks
by Scott M Stark (JIRA)
Add alternate run-as mappings for container callbacks
-----------------------------------------------------
Key: JBAS-3729
URL: http://jira.jboss.com/jira/browse/JBAS-3729
Project: JBoss Application Server
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Components: EJB2, EJB3, Security, Web (Tomcat) service
Affects Versions: JBossAS-4.0.4.GA
Reporter: Scott M Stark
Assigned To: Scott M Stark
Fix For: JBossAS-4.0.6.CR1
Other app servers support anlternate run-as semantics from the container init/destroy lifecycle callbacks. Weblogic for example:
http://e-docs.bea.com/wls/docs81/webapp/weblogic_xml.html#1041058
This is an equivalent of <run-as> for init method for servlets. For example:
<init-as>
<servlet-name>FooServlet</servlet-name>
<principal-name>joe</principal-name>
</init-as>
<destroy-as>
<servlet-name>BarServlet</servlet-name>
<principal-name>bob</principal-name>
</destroy-as>
This would allow more control over how these methods interact with secured resources. Similar options could be added for ejb lifecycle methods as well.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 3 months