2016-10-16 3 views
1

I持ってProductエンティティであるエンティティ:dropwizard休止名前付きクエリは知られていない

package com.amitbaz.tradingsystem; 

import javax.persistence.Column; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

import org.hibernate.annotations.DynamicUpdate; 
import org.hibernate.annotations.NamedQueries; 
import org.hibernate.annotations.NamedQuery; 
import org.hibernate.annotations.Table; 

@DynamicUpdate(true) 
@Table(appliesTo = "productTable") 
@NamedQueries({ 
    @NamedQuery(name = "com.amitbaz.tradingsystem.product.GetAll", query= "select p from Product p"), 
    @NamedQuery(name = "com.amitbaz.tradingsystem.product.GetByName", query= "select p from Product p where p.fullName like :name") 

}) 
public class Product { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "product_id") 
    private int id; 

    @Column(name="product_name") 
    private String fullName; 

    @Column(name="product_info") 
    private String info; 

    @Column(name="product_price") 
    private float price; 

    @Column(name="product_base_currency") 
    private String baseCurrency; 

    public Product(String fullName, String info, float price, String baseCurrency) { 
     this.fullName = fullName; 
     this.info = info; 
     this.price = price; 
     this.baseCurrency = baseCurrency; 
    } 
} 

とDAOは、次のようになります。私はまた、アプリケーションクラスでhibernateBundleを初期化

package com.amitbaz.tradingsystem; 

import org.hibernate.Hibernate; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import java.util.List; 

import io.dropwizard.hibernate.AbstractDAO; 

public class ProductDAO extends AbstractDAO<Product>{ 


    public ProductDAO(SessionFactory sessionFactory) { 
     super(sessionFactory); 
     // TODO Auto-generated constructor stub 
    } 

    public List<Product> getAll(){ 
     return list(namedQuery("com.amitbaz.tradingsystem.product.GetAll")); 
    } 

    public List<Product> getByName(String name){ 
     StringBuilder builder = new StringBuilder("%"); 
     builder.append(name).append("%"); 
     return list(namedQuery("com.amitbaz.tradinsystem.product.GetByName").setParameter("name", builder.toString())); 
    } 

} 

とリソースを環境に登録しました:

今、私はこのクエリをテストしています500エラー、サーバログのNamed query not known: <name of the query>エラー

答えて

1

javax.persistence @Entity注釈を製品クラスに追加しようとしています。

+0

OMGあなたに感謝してくれてありがとう!私はユーザーにhibernate注釈@ Entityをしようとしていましたが、それは廃止されていますので、正しいインポートが何であるかを理解するのに困っていました...また、@表applysToを名前に変更しました。 – kitsuneFox

+0

あなたは歓迎です:) – javaeeeee

関連する問題