Howto prevent SEAM from mapping POJO ?
w17chm4n Oct 30, 2007 6:50 AMHi ! I have another problem. As I need a drop-down menu in my application, and data from which it`s created isn`t in database, I`m trying to do sth like this (look @ questionTypeList):
@Stateful
@Scope(ScopeType.SESSION)
@Name("QuestionController")
public class QuestionControllerBean implements QuestionController {
@Logger
private Log log;
@In(create = true)
private QuestionManager questionManager;
@In(create = true)
private PictureManager pictureManager;
@In(required = false)
private QuestionCategory questionCategory;
@In(required = false)
private Question question;
@DataModel("answerList")
private List<Answer> answerList;
@In(required = false)
@DataModelSelection("answerList")
private Answer answer;
@DataModel("questionTypeList")
private List<QuestionType> questionTypeList;
@In(required = false)
@DataModelSelection("questionTypeList")
private QuestionType questionType;
@Out(required = false)
private Picture picture;
private int fileSize;
private byte [] data;
private String fileName;
private String contentType;
public void addQuestion() {
if(fileName == null) {
question.setQuestionType(questionType.getQuestionType());
question.setCategory(questionCategory);
questionManager.addQuestion(question);
} else {
picture.setQuestion(question);
question.setPicture(picture);
question.setQuestionType(questionType.getQuestionType());
question.setCategory(questionCategory);
questionManager.addQuestion(question);
pictureManager.addPicture(picture);
}
}
public void removeQuestion() {
}
public void selectQuestion() {
}
public void addAnswer() {
}
public void removeAnswer() {
}
@Factory("questionTypeList")
public void createQuestionTypeList() {
questionTypeList = new ArrayList<QuestionType>();
questionTypeList.add(new QuestionType(Commons.INPUT,"Input answer as text"));
questionTypeList.add(new QuestionType(Commons.SELECT_ONE,"Select one answer"));
questionTypeList.add(new QuestionType(Commons.SELECT_MANY,"Select many answers"));
}
public void addPicture() {
picture = new Picture(data, fileName, new Date());
picture.setQuestion(question);
}
public byte[] getData() {
return data;
}
public void setData(byte[] data) {
this.data = data;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public int getFileSize() {
return fileSize;
}
public void setFileSize(int fileSize) {
this.fileSize = fileSize;
}
@Remove @Destroy
public void destroy() {}
}
It uses a POJO
public class QuestionType {
private int QuestionType;
private String label;
public QuestionType() {
}
public QuestionType(int questionType, String label) {
this.QuestionType = questionType;
this.label = label;
}
public int getQuestionType() {
return QuestionType;
}
public void setQuestionType(int QuestionType) {
this.QuestionType = QuestionType;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
}
and a simple class for static variables
public class Commons {
public static final int INPUT = 0;
public static final int SELECT_ONE = 1;
public static final int SELECT_MANY = 2;
}
When I try to submit my form (addQuestion method) i get the following error:
org.hibernate.MappingException: Unknown entity: java.lang.Object
As i think, the problem is that JBoss is trying to map POJO and the Commons class to the database, because these files r in the same jar as the normal seam components and entities.
So, is there a way to prevent seam from trying to map those two files?