2017-06-16 5 views
0

Ich versuche, die Anzahl der Zeilen einer Abfrage in einem Repository enthalten zu drucken. Hier ist das Repository:Kann EntityManager nicht finden Apache Deltaspike

@Repository 
public interface TagRepository extends EntityRepository<Tag, Long> { 

    /** 
    * @param // 
    * @return all Tag matched 
    */ 
    @Query("SELECT * FROM Tag") //TESTED 
    List<Tag> findByDefault(); 
} 

Hier mein Controller ist:

@Named 
@ViewScoped 
public class ControllerTest implements Serializable { 

/** 
* 
*/ 
    private static final long serialVersionUID = 1L; 
    @Inject 
    private TagRepository tagRepository; 

    public ControllerTest() 
    { 
     super(); 
    } 

    public Integer compte() 
    { 
     return tagRepository.findByDefault().size(); 
    } 

    public String essai() 
    { 
     String message = "Hello World !"; 
     return message; 
    } 
} 

Hier ist meine * .xhtml Datei:

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:ds="http://deltaspike.apache.org/jsf" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:rich="http://richfaces.org/rich" template="/layout/template.xhtml" 
xmlns:a4j="http://richfaces.org/a4j"> 

<ui:define name="body"> 
    <rich:collapsiblePanel switchType="client" opened="false" label="Updates version 2.2.7"> 
      <h:outputText 
       value="#{controllerTest.compte()}">   
      </h:outputText> 
      <h:outputText 
       value="#{controllerTest.essai()}">   
      </h:outputText> 
      <h:outputText 
       value="Hello world !">   
      </h:outputText> 
    </rich:collapsiblePanel> 
</ui:define> 

Das Layout läuft perfekt mit der Methode essai() aber wenn ich die Methode verwenden compte():

Ich wusste zwar, dass Apache Deltaspike in der Lage war, Beans mit eigenen Anmerkungen zu verwalten.

Die Frage ist: Woher kommt dieses Problem? Ist es mein Repository? Habe ich etwas verpasst ? Ich habe noch dieses googled aber nichts für Apache Deltaspike.

Ich benutze Wildfly 10.0.0, Hibernate 5.4.1, Eclipse Neon, RichFaces 4.X, JSF 2.X, Apache Deltaspike 1.7.2.

Vielen Dank im Voraus für Ihre Antworten.

Antwort

2

DeltaSpike benötigt einen EntityManager, der über einen CDI-Producer verfügbar gemacht wird. Zum Beispiel:

public class EntityManagerProducer { 

    @PersistenceUnit 
    private EntityManagerFactory emf; 

    @Produces 
    public EntityManager create() { 
     return emf.createEntityManager(); 
    } 

    public void close(@Disposes EntityManager em) { 
     if (em.isOpen()) { 
      em.close(); 
     } 
    } 
} 

könnten Sie mehr Dokumentation finden Sie hier: https://deltaspike.apache.org/documentation/data.html

+0

Schließlich habe ich nicht einen EntityManager brauchen. Es war ein Konflikt zwischen meinen Abhängigkeiten. Scopes bieten Bohnen automatisch an. Danke vielmals ! – rbcvlr

Verwandte Themen