从视图创建实体并在条件查询中使用它

时间:2018-03-30 20:04:31

标签: java jpa entity views

我在mysql中创建了一个视图

create view vw_collec_sec_search as
select 
cs.collection_set_id,
cs.collection_set_name
from collection_set cs;

我从中生成了实体。

@Entity
@Immutable
@Table(name="vw_collec_sec_search")
@NamedQuery(name="VwCollecSecSearch.findAll", query="SELECT v FROM 
VwCollecSecSearch v")
public class VwCollecSecSearch implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name="collection_set_id")
private BigInteger collectionSetId;

现在我正在尝试在条件查询中使用它

   CriteriaBuilder cb = entityManager.getCriteriaBuilder();

    // Query for a List of objects.
    CriteriaQuery cq = cb.createQuery();
    Root root = cq.from(VwCollecSecSearch.class);

以下是我得到的例外

java.lang.IllegalArgumentException: Not an entity: class 
com.nsf.traqtion.data.view.VwCollecSecSearch
java.lang.IllegalArgumentException: Not an entity: class 
com.nsf.traqtion.data.view.VwCollecSecSearch
Not an entity: class com.nsf.traqtion.data.view.VwCollecSecSearch

我在我的项目中使用JPA。

2 个答案:

答案 0 :(得分:0)

您需要定义您的实体,因为您必须使用主类中的@EntityScan(“com.xxx.xx.model”)进行扫描。

保持或多或少的东西:

`@SpringBootApplication()

@ComponentScan({

"com.xxx.reporting.service",
"com.xxx.api.reporting.controller",
"com.xxx.reporting.repository"})

@EntityScan("com.xxx.reporting.model") @ EnableJpaRepositories() public class Application { public static void main(String [] args){ SpringApplication.run(Application.class,参数); } }

答案 1 :(得分:0)

感谢您的解决方案..实际上我放错了在不同文件夹中创建的实体。所以它无法将其作为一个实体进行扫描。现在问题已解决