Seam saying Datamodel saying row is Unavailable... WHY???
tony.herstell1 Apr 21, 2007 11:52 PMGiven:
@DataModel("displayableCategoryDatamodel")
private LinkedHashSet<DisplayableCategory> displayableCategorySet;
@DataModelSelection("displayableCategoryDatamodel")
private DisplayableCategory selectedDisplayableCategory;
@DataModel("keywordsDatamodel")
private LinkedHashSet<Keyword> keywordsSet;
@DataModelSelection("keywordsDatamodel")
private Keyword selectedKeyword;
The first time a member is added to keywordsSet and a page is displayed using the Datamodel then I get this:
Caused by: javax.ejb.EJBException: java.lang.IllegalArgumentException: row is unavailable at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:69) at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83) at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:83) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:203) at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98) at $Proxy113.isAdTypeComplete(Unknown Source) at sun.reflect.GeneratedMethodAccessor216.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.seam.util.Reflections.invoke(Reflections.java:20) at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31) at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:72) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:57) at org.jboss.seam.interceptors.RemoveInterceptor.aroundInvoke(RemoveInterceptor.java:40) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69) at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103) at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInterceptor.java:50) at org.javassist.tmp.java.lang.Object_$$_javassist_7.isAdTypeComplete(Object_$$_javassist_7.java) ... 51 more
The initial set is created using:
// Create the default set of Keywords. keywordsSet = new LinkedHashSet<Keyword>();
a member is added using
public void addKeyword() {
Keyword newKeyword = new Keyword();
newKeyword.setKeyword(getNewKeyword());
keywordsSet.add(newKeyword);
}
Keyword is:
@Entity // Defines this as an Entity that is a class mapped to the Datastore.
@Name("keyword") // Name used within SEAM for an instance of this class.
@Role(name="keywordSearchCriteria", scope=SESSION) // Another named instance of this class (used in the session scope).
public class Keyword implements Serializable {
private Long id;
private Integer version; // Hiberante Docs: EJB3 sais Timestamp actually but recommend Integer
private String keyword;
private Administration administration;
public Keyword() {
}
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Version
@Column(name="version4OptLock")
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
@NotNull(message="required")
@Length(max = 30)
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
@Embedded
public Administration getAdministration() {
return administration;
}
public void setAdministration (Administration administration) {
this.administration = administration;
}
@Override
public String toString() {
return getKeywordAsText(this);
}
public static String getKeywordAsText(Keyword keyword) {
StringBuffer infoToReturn = new StringBuffer("Keyword");
infoToReturn.append(" (Id => " + keyword.getId());
infoToReturn.append(", Version => " + keyword.getVersion());
infoToReturn.append(", Keyword => " + keyword.getKeyword());
if (keyword.getAdministration() != null) {
infoToReturn.append(", Administration --> " + keyword.getAdministration());
}
infoToReturn.append(")");
return infoToReturn.toString();
}