You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.
| Forum: Seam Users |
26. Jul 2010, 18:01 America/New_York | Link |
Hi everybody
This may look very straightforward, but i don't know the correct way to do it.
Consider two classes TestAHome and TestBHome, in the next scenario:
//All the imports well declared
@name("testAHome")
public class TestAHome extends EntityHome<TestA> {
@In IdentityManager identityManager;
public void setTestAId(Long id) {
setId(id);
}
public Long getTestAId() {
return (Long) getId();
}
public boolean deleteTestA(String TestAName) {
if(identityManager.deleteUser(TestAName)) {
new TestBHome().deleteATestA(TestAName); //Here is the problem, in new TestBHome()
return true;
}
else {return true};
}
}
And
//All the imports well declared
@name("testBHome")
public class TestBHome extends EntityHome<TestB> {
@In EntityManager entityManager;
public void setTestBId(Long id) {
setId(id);
}
public Long getTestBId() {
return (Long) getId();
}
public void deleteATestA(String Aname) {
List<TestA> testAlist = entityManager.createNamedQuery("findTestAs")
.setParameter("name",Aname)
.getResultList();
for(TestA i : testAlist) {
setTestBId(i.getId());
remove();
clearInstance();
}
}
}
The entity beans TestA and TestB don't have any relationship in the database, but TestB has information related with TestA(TestAName); so if i wanna delete a TestA, i have to delete all the information that TestB has in relation to TestA.
When i execute this code i get:
Caused by javax.el.ELException with message: "java.lang.NullPointerException" ... Caused by java.lang.NullPointerException with message: ""
So the fact is that i don't know how to call a method located in a class(That inherits from EntityHome) to TestAHome(That inherits from EntityHome too).
If i try this:
@name("testAHome")
public class TestAHome extends EntityHome<TestA> {
... ...
@In TestBHome testBHome;
... ...
public boolean deleteTestA(String TestAName) {
if(identityManager.deleteUser(TestAName)) {
testBHome.deleteATestA(TestAName); //Here the problem continues, in testBHome
return true;
}
else {return true};
}
}
I get:
org.jboss.seam.InstantiationException with message: "Could not instantiate Seam component: TestAHome" ... Caused by org.jboss.seam.RequiredException with message: "@In attribute requires non-null value: testAHome.testBHome"
So i'm confused, i want to execute deleteATestA from deleteATestA to perform a improved delete function, but i don't know the correct way to do this
!!!Thanks in advance!!!