Использование шаблона фасадов с JSF, только в одной сущности менеджер сущностей - NULLJAVA

Программисты JAVA общаются здесь
Anonymous
Использование шаблона фасадов с JSF, только в одной сущности менеджер сущностей - NULL

Сообщение Anonymous »

У меня есть организация, которая пытается вызвать фасад (который я называю шагами), который разговаривает с DAO. Менеджер объектов только в этом случае является нулевым, когда я смотрю/устанавливаю точку останова. Все еще немного зеленый с Java, надеясь получить что -то от одного из вас, что заставит мяч катиться в правильном направлении отладки. Прямо сейчас я подозрительно, что проблема - моя собственная толщина черепа.

Код: Выделить всё

package com.mdjdreview.session;

import com.mdjdreview.dao.Steps;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless
public class StepsFacade extends AbstractFacade  {
@PersistenceContext(unitName = "MdJdReviewPU2")
private EntityManager em;

@Override
protected EntityManager getEntityManager() {
return em;
}

public StepsFacade() {
super(Steps.class);
}

public Object findAllRange(int low, int high) {
try {
Query q = this.em.createNamedQuery("Steps.findAllRange");
q.setMaxResults(high);
q.setFirstResult(low);
return q.getResultList();
}
catch(NoResultException ex) {
return null;
}
}

public Object findByPatternRange(String title, int low, int high) {
try {
Query q = this.em.createNamedQuery("Steps.findByPatternRange");
q.setParameter("title", title.toUpperCase() + "%");
q.setMaxResults(high);
q.setFirstResult(low);
return q.getResultList();
}
catch(NoResultException ex) {
return null;
}
}

public int findByPatternRangeCount(String title) {
Query q = this.em.createNamedQuery("Steps.findByPatternRangeCount");
q.setParameter("title", title.toUpperCase() + "%");
return ((Long) q.getSingleResult()).intValue();
}

public Object findByTitle(String title) {
try {
return this.em.createNamedQuery("Steps.findByTitle").setParameter("title", title).getSingleResult();
}
catch(NoResultException ex) {
return null;
}
}

public Object findByProductId(Object productId) {

try {
return this.em.createNamedQuery("Steps.findByProductId").setParameter("productId", productId).getResultList();
} catch (Exception e) {
System.out.println("----------- findByProductId err "+e.getLocalizedMessage());
System.out.println("----------- findByProductId err "+e.getMessage());
System.out.println("----------- findByProductId err "+e.getStackTrace());
System.out.println(productId);
return e.getMessage();
}
}

public int findByProductQuestionCount(Object productId) {
Query q = this.em.createNamedQuery("Steps.findByProductQuestionCount");
q.setParameter("productId", productId);

if(q.getSingleResult() == null) {
return 0;
}
else {
return ((Long) q.getSingleResult()).intValue();
}
}

public int findBySlideStepCount(Object slidesId) {
Query q = this.em.createNamedQuery("Steps.findBySlideStepCount");
q.setParameter("slidesId", slidesId);

if(q.getSingleResult() == null) {
return 0;
}
else {
return ((Long) q.getSingleResult()).intValue();
}
}

public int findByCategoryStepCount(Object categoriesId) {
Query q = this.em.createNamedQuery("Steps.findByCategoryStepCount");
q.setParameter("categoriesId", categoriesId);

if(q.getSingleResult() == null) {
return 0;
}
else {
return ((Long) q.getSingleResult()).intValue();
}
}

public int findByModuleStepCount(Object modulesId) {
Query q = this.em.createNamedQuery("Steps.findByModuleStepCount");
q.setParameter("modulesId", modulesId);

if(q.getSingleResult() == null) {
return 0;
}
else {
return ((Long) q.getSingleResult()).intValue();
}
}

public Object findByExamStep(Object step, Object generatedExamsId) {
try {
Query q = this.em.createNamedQuery("Steps.findByExamStep");
q.setParameter("step", step);
q.setParameter("generatedExamsId",  generatedExamsId);
q.setMaxResults(1);
q.setFirstResult(0);
return q.getSingleResult();
}
catch(NoResultException ex) {
return null;
}
}

/**
* @param em the em to set
*/
public void setEntityManager(EntityManager em) {
this.em = em;
}
}
< /code>
И, что такое озадаченное, здесь - фасад с почти идентичным кодом, который работает хорошо.
> < /p>
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package com.mdjdreview.session;

import com.mdjdreview.dao.Answers;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
*
* @author nick
*/
@Stateless
public class AnswersFacade extends AbstractFacade {
@PersistenceContext(unitName = "MdJdReviewPU2")
private EntityManager em;

@Override
protected EntityManager getEntityManager() {
return em;
}

public AnswersFacade() {
super(Answers.class);
}

public Object findByQuestionId(Object questionId) {
try {
return this.em.createNamedQuery("Answers.findByQuestionId").setParameter("questionId", questionId).getResultList();
}
catch(NoResultException ex) {
return null;
}
}

public Object findAllRange(int low, int high) {
try {
Query q = this.em.createNamedQuery("Answers.findAllRange");
q.setMaxResults(high);
q.setFirstResult(low);
return q.getResultList();
}
catch(NoResultException ex) {
return null;
}
}

public Object findByPatternRange(String title, int low, int high) {
try {
Query q = this.em.createNamedQuery("Answers.findByPatternRange");
q.setParameter("title", title.toUpperCase() + "%");
q.setMaxResults(high);
q.setFirstResult(low);
return q.getResultList();
}
catch(NoResultException ex) {
return null;
}
}

public int findByPatternRangeCount(String title) {
Query q = this.em.createNamedQuery("Answers.findByPatternRangeCount");
q.setParameter("title", title.toUpperCase() + "%");
return ((Long) q.getSingleResult()).intValue();
}
}
< /code>
Вот сущность, которая называется фасадом, > < /p>
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.mdjdreview.entities;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;
import org.primefaces.model.chart.PieChartModel;

// I need to import this package to allow for access to the category object
import com.mdjdreview.dao.Steps;
import com.mdjdreview.dao.Categories;
import com.mdjdreview.session.StepsFacade;
import com.mdjdreview.session.CategoriesFacade;
import com.mdjdreview.session.ProductToCategoriesFacade;
import com.mdjdreview.session.ProductToStepsFacade;

import java.util.List;
import java.util.Map;

import javax.ejb.EJB;

/**
*
* @author joshua
* this is where we layout the graph
*
*/
@ManagedBean
@ViewScoped
public class ExamResults implements Serializable {

private CartesianChartModel categoryModel;
private PieChartModel pieModel;

@EJB
private StepsFacade stepsFacade = new StepsFacade();

@EJB
private CategoriesFacade categoryFacade = new CategoriesFacade();

public ExamResults() {
createCategoryModel();
}

public CartesianChartModel getCategoryModel() {
return categoryModel;
}

public PieChartModel getPieModel() {
return pieModel;
}
// this one draws out the graph

private void createCategoryModel() {
categoryModel = new CartesianChartModel();

Map requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
// TODO: this is not called eamxId, this is a productId don't forget to change this
String productId = (String) requestMap.get("productId");

System.out.println("--------------------------- prouctID = "+productId);

List  cats;

List steps;

try {
steps = (List)this.stepsFacade.findByProductId((Object)productId);
int itemCount = steps.size();
System.out.println("setps in list = "+itemCount);
} catch (Exception e) {
System.out.println("no steps for you");
System.out.println(e.getMessage());
}

try {

cats = this.categoryFacade.findByTypeParentId((Object)productId, "question");
int itemCount = cats.size();
System.out.println("cats in list = "+itemCount);

} catch (Exception e) {
System.out.println("no, dice on the categories");
}

//

System.out.println("just tried to pull steps what's above this line?");

ChartSeries correct = new ChartSeries();
correct.setLabel("Correct");
// what they got right
// setp 1:
//  Step pull back by the steps facade
//  Keywords
//  Catnames

// step 2: loop through steps, query category ID

// that 90 there for heart is a magic number, that needs to be pulled in dynamically
// it looks lie in the AnswersToCategories dao, we can pull the

correct.set("Heart", 90);
correct.set("Bacteria", 100);
correct.set("Mitral Valve", 44);
correct.set("Pediatrics", 80);
correct.set("OBGYN", 25);

ChartSeries missed = new ChartSeries();
missed.setLabel("Missed");
// what they got wrong
missed.set("Heart", 10);
missed.set("Bacteria", 0);
missed.set("Mitral Valve", 56);
missed.set("Pediatrics", 20);
missed.set("OBGYN", 75);
// auto create x & y
categoryModel.addSeries(correct);
categoryModel.addSeries(missed);
}
}
< /code>
Вот что я попробовал исправить: < /p>

 Я выложил выход стартапа (Glassfish) и ничего не видел, все счастливы, не предупреждают, ошибки или что -нибудь более высокое, просто идентично, что не было идентично. любые подсказки.@EJB
private StepsFacade stepsFacade;

@EJB
private CategoriesFacade categoryFacade;
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/167 ... er-is-null

Вернуться в «JAVA»