Hibernate EntityManager findById:javax.ejb.EJBException:java.lang.NullPointerException
我将Hibernate与Dao和JBoss Wildfly一起使用 javaHibernate EntityManager findById:javax.ejb.EJBException:java.lang.NullPointerException,java,hibernate,jboss,dao,Java,Hibernate,Jboss,Dao,我将Hibernate与Dao和JBoss Wildfly一起使用 java public interface Dao<T> { public List<T> findAll(); public T findById(final Class<T> clazz, final Long id); } 这是我的电话: public class VeranstaltungBO { private Dao<Veranstaltung&g
public interface Dao<T> {
public List<T> findAll();
public T findById(final Class<T> clazz, final Long id);
}
这是我的电话:
public class VeranstaltungBO {
private Dao<Veranstaltung> veranstaltungDao;
public Veranstaltung getVeranstaltungById(long id){
// Line below is number 20
return veranstaltungDao.findById(Veranstaltung.class, id);
}
}
请告诉我您也需要什么代码来帮助出于某种原因,
veranstaltungDao
字段未被注入。使用适当的注释(@Autowired
在春天,@Inject
在CDI中,@EJB
在EJB中-我几乎可以肯定它是EJB)来注入它。例如:
import javax.ejb.EJB;
public class VeranstaltungBO {
@EJB
private Dao<Veranstaltung> veranstaltungDao;
public Veranstaltung getVeranstaltungById(long id){
// Line below is number 20
return veranstaltungDao.findById(Veranstaltung.class, id);
}
}
导入javax.ejb.ejb;
公共类VeranstaltungBO{
@EJB
私家道-维拉斯塔尔通道;
公共Veranstaltung getVeranstaltungById(长id){
//下面一行是20号
返回veranstaltungDao.findById(Veranstaltung.class,id);
}
}
VeranstaltungDao.java
@Named(value = "veranstaltungDao")
public class VeranstaltungDao extends AbstractDao<Veranstaltung> {
@Override
public List<Veranstaltung> findAll() {
final TypedQuery<Veranstaltung> query = getEm().createQuery(
"Select a FROM" + Veranstaltung.class.getSimpleName() +" a",
Veranstaltung.class);
return query.getResultList();
}
}
@Stateless
public class VeranstaltungDao extends AbstractDao<Veranstaltung> {
@Override
public List<Veranstaltung> findAll() {
final TypedQuery<Veranstaltung> query = getEm().createQuery(
"Select a FROM" + Veranstaltung.class.getSimpleName() +" a",
Veranstaltung.class);
return query.getResultList();
}
}
@无状态
公共类VeranstaltungDao扩展了AbstractDao{
@凌驾
公共列表findAll(){
final TypedQuery query=getEm().createQuery(
“从“+Veranstaltung.class.getSimpleName()+”a”中选择a”,
Veranstaltung.class);
返回query.getResultList();
}
}
注意,您需要(在上面的示例中)定义类型为Dao
的ejbbean。我不确定,但可能您需要特殊的接口VeranstaltungDao
扩展Dao
,以使其正常工作
您可以使用对:@Stateless
-@EJB
或@Named
-@Inject
。如果您没有激活CDI,第二对将不起作用,如果您没有beans.xml
文件,可能会发生这种情况
@Stateless
表示您希望给定类的对象作为EJB bean由服务器管理@EJB
允许将现有bean注入给定的属性。由于某种原因,veranstaltungDao
字段未被注入。使用适当的注释(@Autowired
在春天,@Inject
在CDI中,@EJB
在EJB中-我几乎可以肯定它是EJB)来注入它。例如:
import javax.ejb.EJB;
public class VeranstaltungBO {
@EJB
private Dao<Veranstaltung> veranstaltungDao;
public Veranstaltung getVeranstaltungById(long id){
// Line below is number 20
return veranstaltungDao.findById(Veranstaltung.class, id);
}
}
导入javax.ejb.ejb;
公共类VeranstaltungBO{
@EJB
私家道-维拉斯塔尔通道;
公共Veranstaltung getVeranstaltungById(长id){
//下面一行是20号
返回veranstaltungDao.findById(Veranstaltung.class,id);
}
}
VeranstaltungDao.java
@Named(value = "veranstaltungDao")
public class VeranstaltungDao extends AbstractDao<Veranstaltung> {
@Override
public List<Veranstaltung> findAll() {
final TypedQuery<Veranstaltung> query = getEm().createQuery(
"Select a FROM" + Veranstaltung.class.getSimpleName() +" a",
Veranstaltung.class);
return query.getResultList();
}
}
@Stateless
public class VeranstaltungDao extends AbstractDao<Veranstaltung> {
@Override
public List<Veranstaltung> findAll() {
final TypedQuery<Veranstaltung> query = getEm().createQuery(
"Select a FROM" + Veranstaltung.class.getSimpleName() +" a",
Veranstaltung.class);
return query.getResultList();
}
}
@无状态
公共类VeranstaltungDao扩展了AbstractDao{
@凌驾
公共列表findAll(){
final TypedQuery query=getEm().createQuery(
“从“+Veranstaltung.class.getSimpleName()+”a”中选择a”,
Veranstaltung.class);
返回query.getResultList();
}
}
注意,您需要(在上面的示例中)定义类型为Dao
的ejbbean。我不确定,但可能您需要特殊的接口VeranstaltungDao
扩展Dao
,以使其正常工作
您可以使用对:@Stateless
-@EJB
或@Named
-@Inject
。如果您没有激活CDI,第二对将不起作用,如果您没有beans.xml
文件,可能会发生这种情况
@Stateless
表示您希望给定类的对象作为EJB bean由服务器管理@EJB
允许将现有bean注入给定的属性。由于某种原因,veranstaltungDao
字段未被注入。使用适当的注释(@Autowired
在春天,@Inject
在CDI中,@EJB
在EJB中-我几乎可以肯定它是EJB)来注入它。例如:
import javax.ejb.EJB;
public class VeranstaltungBO {
@EJB
private Dao<Veranstaltung> veranstaltungDao;
public Veranstaltung getVeranstaltungById(long id){
// Line below is number 20
return veranstaltungDao.findById(Veranstaltung.class, id);
}
}
导入javax.ejb.ejb;
公共类VeranstaltungBO{
@EJB
私家道-维拉斯塔尔通道;
公共Veranstaltung getVeranstaltungById(长id){
//下面一行是20号
返回veranstaltungDao.findById(Veranstaltung.class,id);
}
}
VeranstaltungDao.java
@Named(value = "veranstaltungDao")
public class VeranstaltungDao extends AbstractDao<Veranstaltung> {
@Override
public List<Veranstaltung> findAll() {
final TypedQuery<Veranstaltung> query = getEm().createQuery(
"Select a FROM" + Veranstaltung.class.getSimpleName() +" a",
Veranstaltung.class);
return query.getResultList();
}
}
@Stateless
public class VeranstaltungDao extends AbstractDao<Veranstaltung> {
@Override
public List<Veranstaltung> findAll() {
final TypedQuery<Veranstaltung> query = getEm().createQuery(
"Select a FROM" + Veranstaltung.class.getSimpleName() +" a",
Veranstaltung.class);
return query.getResultList();
}
}
@无状态
公共类VeranstaltungDao扩展了AbstractDao{
@凌驾
公共列表findAll(){
final TypedQuery query=getEm().createQuery(
“从“+Veranstaltung.class.getSimpleName()+”a”中选择a”,
Veranstaltung.class);
返回query.getResultList();
}
}
注意,您需要(在上面的示例中)定义类型为Dao
的ejbbean。我不确定,但可能您需要特殊的接口VeranstaltungDao
扩展Dao
,以使其正常工作
您可以使用对:@Stateless
-@EJB
或@Named
-@Inject
。如果您没有激活CDI,第二对将不起作用,如果您没有beans.xml
文件,可能会发生这种情况
@Stateless
表示您希望给定类的对象作为EJB bean由服务器管理@EJB
允许将现有bean注入给定的属性。由于某种原因,veranstaltungDao
字段未被注入。使用适当的注释(@Autowired
在春天,@Inject
在CDI中,@EJB
在EJB中-我几乎可以肯定它是EJB)来注入它。例如:
import javax.ejb.EJB;
public class VeranstaltungBO {
@EJB
private Dao<Veranstaltung> veranstaltungDao;
public Veranstaltung getVeranstaltungById(long id){
// Line below is number 20
return veranstaltungDao.findById(Veranstaltung.class, id);
}
}
导入javax.ejb.ejb;
公共类VeranstaltungBO{
@EJB
私家道-维拉斯塔尔通道;
公共Veranstaltung getVeranstaltungById(长id){
//下面一行是20号
返回veranstaltungDao.findById(Veranstaltung.class,id);
}
}
VeranstaltungDao.java
@Named(value = "veranstaltungDao")
public class VeranstaltungDao extends AbstractDao<Veranstaltung> {
@Override
public List<Veranstaltung> findAll() {
final TypedQuery<Veranstaltung> query = getEm().createQuery(
"Select a FROM" + Veranstaltung.class.getSimpleName() +" a",
Veranstaltung.class);
return query.getResultList();
}
}
@Stateless
public class VeranstaltungDao extends AbstractDao<Veranstaltung> {
@Override
public List<Veranstaltung> findAll() {
final TypedQuery<Veranstaltung> query = getEm().createQuery(
"Select a FROM" + Veranstaltung.class.getSimpleName() +" a",
Veranstaltung.class);
return query.getResultList();
}
}
@无状态
公共类VeranstaltungDao扩展了AbstractDao{
@凌驾
公共列表findAll(){
final TypedQuery query=getEm().createQuery(
“从“+Veranstaltung.class.getSimpleName()+”a”中选择a”,
Veranstaltung.class);
返回query.getResultList();
}
}
注意,您需要(在上面的示例中)定义类型为Dao
的ejbbean。我不确定,但也许您需要特殊的接口VeranstaltungDao
扩展Dao
,才能实现它