Je suis une étudiante qui essaie de faire travailler mon travail à la maison. Le projet est quit simple, seulement 4 pages (xhtml), vous pouvez vous connecter/déconnecter ajouter de nouveaux éléments (livres et CD) et voir les éléments de la DB. En utilisant derby et glassfish, tous les logiciels sont les dernières versions. Le problème:
Le projet fonctionne sur mon ordinateur J'ai envoyé le projet de trou à mon professeur pour qu'il puisse regarder par-dessus et essayer de trouver ce qui ne va pas, il n'a rien trouvé de mal avec le codage, ce qui veut dire qu'il y a quelque chose qui ne va pas avec mon ordinateur. J'ai donc désinstallé tout ce qui a quelque chose à voir avec java, netbeans, derby, maven et glassfish, que de supprimer les dossiers pour ce logiciel et de l'installer de nouveau, le même problème s'installe. Essayé avec Ubuntu et VirtualBox, la même chose.Java EE avec netbeans
Item.java
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
@Entity
@NamedQuery(name = "findAllItems", query = "SELECT i FROM Item i")
public class Item {
// ======================================
// = Attributes =
// ======================================
@Id
@GeneratedValue
protected Long id;
protected String title;
protected Float price;
protected String description;
// ======================================
// = Constructors =
// ======================================
public Item() {
}
public Item(String title, Float price, String description) {
this.title = title;
this.price = price;
this.description = description;
}
// ======================================
// = Getters & Setters =
// ======================================
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
ItemController.java
package model;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.ArrayList;
import java.util.List;
@ManagedBean
@RequestScoped
public class ItemController {
// ======================================
// = Attributes =
// ======================================
@EJB
private ItemEJB itemEJB;
private Book book = new Book();
private CD cd = new CD();
private Item item = new Item();
private List<Item> itemList = new ArrayList<Item>();
// ======================================
// = Public Methods =
// ======================================
public String doNewBook() {
return "newBook.xhtml";
}
public String doNewCD() {
return "newCD.xhtml";
}
public String doCreateBook() {
// book.setDescription(item.getDescription());
// book.setPrice(item.getPrice());
// book.setTitle(item.getTitle());
book = itemEJB.createBook(book);
itemList = itemEJB.findItems();
return "listItems.xhtml";
}
public String doCreateCD() {
// cd.setDescription(item.getDescription());
// cd.setPrice(item.getPrice());
// cd.setTitle(item.getTitle());
cd = itemEJB.createCD(cd);
itemList = itemEJB.findItems();
return "listItems.xhtml";
}
// ======================================
// = Getters & Setters =
// ======================================
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public CD getCd() {
return cd;
}
public void setCd(CD cd) {
this.cd = cd;
}
public List<Item> getItemList() {
itemList = itemEJB.findItems();
return itemList;
}
public void setItemList(List<Item> itemList) {
this.itemList = itemList;
}
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
}
ItemEJB.java
package model;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.util.List;
@Stateless
public class ItemEJB {
// ======================================
// = Attributes =
// ======================================
@PersistenceContext(unitName = "Lab5PU")
private EntityManager em;
// ======================================
// = Public Methods =
// ======================================
public List<Item> findItems() {
Query query = em.createNamedQuery("findAllItems");
return query.getResultList();
}
public Book createBook(Book book) {
em.persist(book);
return book;
}
public CD createCD(CD cd) {
em.persist(cd);
return cd;
}
}
Trace de la pile:
En regardant la trace de la pile me dit seulement que « NamedQuery de nom: findAllItems introuvable. " mais dans mon fichier, il ressemble à ceci "@NamedQuery (name =" findAllItems ", requête =" SELECT i FROM Item i ")". Si vous avez besoin de plus d'informations sur quelque chose que de simplement me le dire et l'afficher.
Voici la trace de la pile de trous:
javax.ejb.EJBException
javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5193)
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5091)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4879)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
at $Proxy145.findItems(Unknown Source)
at model.__EJB31_Generated__ItemEJB__Intf____Bean__.findItems(Unknown Source)
at model.ItemController.getItemList(ItemController.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIData.getValue(UIData.java:731)
at javax.faces.component.UIData.getDataModel(UIData.java:1798)
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484)
at javax.faces.component.UIData.setRowIndex(UIData.java:473)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
at javax.faces.component.UIData.encodeBegin(UIData.java:1118)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1754)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalArgumentException: NamedQuery of name: findAllItems not found.
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getDatabaseQueryInternal(EJBQueryImpl.java:577)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1043)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNamedQuery(EntityManagerWrapper.java:533)
at model.ItemEJB.findItems(ItemEJB.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5366)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5338)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5326)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
... 58 more
================================ ============================================= MISE À JOUR & SOLUTION J'ai résolu le problème mais je ne sais toujours pas quel était le problème. Pour ceux qui veulent connaître la solution ici, il vient. J'ai trois disques durs sur mon PC. J'ai déplacé tous les fichiers d'un lecteur à l'autre deux. Imprimez ensuite le projet sur papier. Puis j'ai enlevé mon lecteur principal avec Windows 7 x64 et formaté le lecteur vide, installé Windows 7 (mise à jour complète), netBeans, maven, glassFish et derby. Écrit le projet dans netBeans à la main (pas de copie), fait un nouveau PU et c'est tout. Il suffit de lancer le projet et tout fonctionnait maintenant, ne le comprenez pas mais bon c'est la vie =)
query = "SÉLECTIONNEZ À PARTIR DE L'OBJET" Je ne suis pas un gourou SQL, mais cela n'a aucun sens pour moi. Vous ne voulez pas dire "SELECT * FROM Item" OU "SELECT * FROM Item i"? ou "SELECT i.i FROM Item i"? –
Essayé cela, ne pas aider.J'ai aussi une autre NamedQuery comme ça: @NamedQuery (name = "findAllMessageEntities", requête = "SELECT m FROM MessageEntity m") et cela fonctionne très bien. En php SELECT * FROM fonctionnerait. – Pawel
@ vlad-ardelean: c'est JPQL, pas SQL. Et c'est une requête JPQL valide. –