2017-06-01 18 views
0

私は2つのテーブル 春データのテーブルからデータを取得する方法jpa?

@Entity 
@Table(name = "TAX_CATEGORY") 
public class TaxCategory { 

    @Id 
    @GeneratedValue 
    @Column(name = "ID", nullable = false) 
    private long id; 

    @Column(name = "CATEGORY", nullable = false) 
    private String category; 

    @Column(name = "TAX", nullable = false) 
    private Double tax; 

@Entity 
@Table(name = "PRODUCT") 
public class Product { 

    @Id 
    @GeneratedValue 
    @Column(name = "ID", nullable = false) 
    private long id; 

    @Column(name = "PRICE", nullable = false) 
    private Double price; 

    @Column(name = "NAME", nullable = false) 
    private String name; 

    @OneToOne 
    @JoinColumn(name = "TAX_CATEGORY_ID") 
    private TaxCategory taxCategory; 

は、今私はそれが戻ってくる一覧表示

"Select p.name, p.price, t.tax from Product p, TaxCategory t join p.taxCategory.id=t.id" 

を照会する必要があり税

商品名ProductPriceですが、私は2つからこのデータを取得することはできませんよテーブル。単一のテーブルのデータが正常に動作しています。

public interface CustomRepositoryCustom { 
    public void customMethod(); 
} 

public interface CustomRepository 
    extends JpaRepository<Account, Long>, CustomRepositoryCustom { } 

public class CustomRepositoryImpl implements CustomRepositoryCustom { 


    public void customMethod() { 
     Query nativeQuery = entityManager.createNativeQuery("Select p.name, p.price, t.tax from Product p, TaxCategory t join p.taxCategory.id=t.id"); 
     return query.getResultList(); 
    } 
} 

これは、オブジェクトがBeanを管理されていないという例外がスローされます。カスタムオブジェクトを作成すると、同様のタイプの問題が発生します。

+0

どのようにクエリしていますか?あなたはJPARepositoryを使いますか?そのコードを入れても – pvpkiran

+0

が追加されました。 – user1298426

+0

クラス 'CustomRepositoryImpl'に' @ Service'アノテーションを付けます。 –

答えて

0

次のJPAクエリを使用して、両方のテーブルデータを取得します。ここでは、製品を取得するためにjpaクエリを使用しました。製品オブジェクトから、taxCategoryを取得できます。代わりに、queryメソッドの

public interface CustomRepository extends JpaRepository<Account, Long>, CustomRepositoryCustom { 

    Query("select product from Product as product join fetch product.taxCategory as taxCategory where taxCategory.id = :taxCategoryId") 
    public Product getProductByCategory(@Param Long taxCategoryId); 
} 
0

あなたは直接として、カテゴリIDに基づいた製品を見つけるために、JPAメソッドを定義することができます。

@Repository 
@RepositoryRestResource 
public interface ICountryRepository extends JpaRepository<Product , Long > { 
List<Product> findByTaxCategory_Id(@Param Long Id); 
} 
関連する問題