【问题标题】:Creating entity from view and using it in criteria query从视图创建实体并在条件查询中使用它
【发布时间】:2018-03-30 20:04:31
【问题描述】:

我在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。

【问题讨论】:

  • 您是否将实体添加到 persistence.xml 中?

标签: java jpa entity views


【解决方案1】:

您需要定义您的实体,为此您必须在主类中使用@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 , args); }@ 987654329@}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 2012-09-30
      • 2021-04-24
      相关资源
      最近更新 更多