2015-10-20 4 views
0

Я новичок в/EL/EJB WORLD JSP так возьмите его в счете, пожалуйста ... хехехЯ не могу назвать @NamedQueries

Мой вопрос продолжением PREVIOUS Q?

так и в комментарии/ответы на указанный выше вопрос рекомендуется использовать customerFacade.findByUserName (String userName), но проблема в том, что я не могу использовать такой @NamedQuery.

Мой код выглядит следующим образом:

CustomerFacade

package Session; 

//imports ** 

@Stateless 
public class CustomerFacade extends AbstractFacade<Customer> { 

    @PersistenceContext(unitName = "OnlineStorePU") 
    private EntityManager em; 

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

    public CustomerFacade() { 
    super(Customer.class); 
    } 

} 

Клиент

package Entity; 

//imports*** 

@Entity 
@Table(name = "customer") 
@XmlRootElement 
@NamedQueries({ 
@NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c"), 
@NamedQuery(name = "Customer.findById", query = "SELECT c FROM Customer c WHERE c.id = :id"), 
@NamedQuery(name = "Customer.findByName", query = "SELECT c FROM Customer c WHERE c.name = :name"), 
@NamedQuery(name = "Customer.findByMobile", query = "SELECT c FROM Customer c WHERE c.mobile = :mobile"), 
@NamedQuery(name = "Customer.findByEmail", query = "SELECT c FROM Customer c WHERE c.email = :email"), 
@NamedQuery(name = "Customer.findByAddress", query = "SELECT c FROM Customer c WHERE c.address = :address"), 
@NamedQuery(name = "Customer.findByFax", query = "SELECT c FROM Customer c WHERE c.fax = :fax"), 
@NamedQuery(name = "Customer.findByTelephone", query = "SELECT c FROM Customer c WHERE c.telephone = :telephone"), 
@NamedQuery(name = "Customer.findByUsername", query = "SELECT c FROM Customer c WHERE c.username = :username")}) 

public class Customer implements Serializable { 
    /** 
    * all generated attributes from DB import Wizard 
    * no findAll() or findByXxxxx() is declared here 
    * So that is the reason I Assume that all @NamedQueries{} 
    * are somehow creating functions with Name as @NameQuery 
    * 
    */ 
} 

Мой вопрос мне нужно реализовать @Na ли medQuery как функции, если так КАК?

ответ

1

Вы должны использовать что-то вроде этого

em.createNamedQuery("Customer.findByUsername") 
.setParameter("username", "Smith") 
.getResultList(); 
+0

Является ли это Клиентом или CustomerFacade класса! – T04435

+0

Да, создайте метод для этого, который вы можете вызывать из своего кода. – Flagman

0

Вы можете использовать TypedQuey:

final TypedQuery<Customer> query = em.createNamedQuery(
      "Customer.findByName", Customer.class) 
      .setParameter("name", "Ron"); 
List<Customer> = query.getResultList(); 
+0

Является ли это в классе Customer или CustomerFacade! – T04435

+0

@ T04435: В классе 'CustomerFacade'. –

+0

@ T04435: Это сработало для вас? –

Смежные вопросы