在具有休眠注释的视图上获得零结果



我正在使用Spring MVC和Hibernate。我的数据库中有一个视图。我已经定义了与表格相同的视图。但我没有@Entity而是给了@Embeddable。但是当我运行下面的代码时,我得到的结果为零。但是视图上有条目。我犯了什么错误?

订阅计划程序.java

package com.span.vms.scheduler;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import com.span.vms.model.Subscription;
import com.span.vms.service.VulnerabilityService;
public class SubscriptionScheduler {
final static Logger logger = Logger.getLogger(SubscriptionScheduler.class);
@Autowired
VulnerabilityService vulnerabilityService;
public void helloRajesh() {
    List<Subscription> subscriptions = vulnerabilityService.findVulnerabilityBySubscription("rajesh");
    logger.info("Total Subscriptions " + subscriptions.size());
    logger.info("Hello Rajesh " + new Date());
    for (Subscription subscription : subscriptions) {
        logger.info(subscription.getUser() + " - " + subscription.getCve_id());
    }
}

}

漏洞服务.java

package com.span.vms.service;
import java.util.List;
import com.span.vms.model.Subscription;
import com.span.vms.model.Vulnerability;
public interface VulnerabilityService {
List<Subscription> findVulnerabilityBySubscription(String string);
}

VulnerabilityServiceImpl.java

package com.span.vms.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.span.vms.dao.SubscriptionDao;
import com.span.vms.dao.VulnerabilityDao;
import com.span.vms.model.Subscription;
import com.span.vms.model.Vulnerability;
@Service("vulnerabilityService")
@Transactional
public class VulnerabilityServiceImpl implements VulnerabilityService {

    @Autowired
    private SubscriptionDao subscriptionDao;
    @Override
    public List<Subscription> findVulnerabilityBySubscription(String user) {
        return subscriptionDao.findVulnerabilityBySubscription(user);
    }
}

订阅道.java

package com.span.vms.dao;
import java.util.List;
import com.span.vms.model.Subscription;
public interface SubscriptionDao {
    List<Subscription> findVulnerabilityBySubscription(String user);
}

订阅道.java

package com.span.vms.dao;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import com.span.vms.model.Subscription;
@Repository("SubscriptionDao")
public class SubscriptionDaoImpl extends AbstractDao<Integer, Subscription> implements SubscriptionDao {
    @SuppressWarnings("unchecked")
    @Override
    public List<Subscription> findVulnerabilityBySubscription(String user) {
        Criteria criteria = createEntityCriteria();
        criteria.add(Restrictions.eq("user", user));
        return (List<Subscription>) criteria.list();
    }
}

摘要道.java

package com.span.vms.dao;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
public abstract class AbstractDao<PK extends Serializable, T> {
    private final Class<T> persistentClass;
    @SuppressWarnings("unchecked")
    public AbstractDao() {
        this.persistentClass = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[1];
    }
    @Autowired
    private SessionFactory sessionFactory;
    protected Session getSession() {
        return sessionFactory.getCurrentSession();
    }
    @SuppressWarnings("unchecked")
    public T getByKey(PK key) {
        return (T) getSession().get(persistentClass, key);
    }
    public void persist(T entity) {
        getSession().persist(entity);
    }
    public void delete(T entity) {
        getSession().delete(entity);
    }
    protected Criteria createEntityCriteria() {
        return getSession().createCriteria(persistentClass);
    }
}

订阅.java

package com.span.vms.model;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Table;
@Embeddable
@Table(name = "subscription")
public class Subscription {
    @Column(name = "cve_id", unique = false, nullable = false)
    private String cve_id;
    @Column(name = "user", nullable = false)
    private String user;
    public String getCve_id() {
        return cve_id;
    }
    public void setCve_id(String cve_id) {
        this.cve_id = cve_id;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
}

可嵌入类旨在嵌入到具有相同标识的实体中。

https://docs.oracle.com/javaee/6/api/javax/persistence/Embeddable.html

您似乎正在尝试使用 en 嵌入 作为 en 实体。