java - hibernate 未映射

标签 java mysql spring hibernate

我已经使用 spring3 和 hibernate4 创建了一个项目。但是它无法运行。下面提供了代码和根本原因。

@Entity
@Table(name = "Songs")
public class Song implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    Integer id;
    @Column(name = "Name", length = 100, nullable = false)
    String name;
    @Column(name = "Category", length = 100, nullable = true)
    String category;
    @Column(name = "Singer", length = 100, nullable = true)
    String singer;
    @Column(name = "Author", length = 100, nullable = true)
    String author;
//getter & setter

我有 DAO

@Repository("musicDao")
public class MusicDaoImpl implements MusicDao {

    private SessionFactory sessionFactory;
    private TransactionTemplate transactionTemplate;

    public TransactionTemplate getTransactionTemplate() {
        return transactionTemplate;
    }

    public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
        this.transactionTemplate = transactionTemplate;
    }

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    @Autowired
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Transactional
    public void insert(Song m) {
        sessionFactory.getCurrentSession().save(m);
    }

    @Transactional
    public void update(Song m) {
        sessionFactory.getCurrentSession().update(m);
    }

    @Transactional
    public void delete(int id) {
        // TODO Auto-generated method stub
        Song s = (Song) sessionFactory.getCurrentSession().get(Song.class, id);
        sessionFactory.getCurrentSession().delete(s);
    }

    @Transactional
    public Song getMusic(int id) {
        // TODO Auto-generated method stub
        return (Song) sessionFactory.getCurrentSession().get(Song.class, id);
    }

    @SuppressWarnings("unchecked")
    @Transactional
    public List<Song> allSong() {
        // TODO Auto-generated method stub
//      Query query = sessionFactory.getCurrentSession().createQuery("from songs");
//      return query.list();
        return sessionFactory.getCurrentSession().createQuery("from songs").list();
    }
}

我使用 MySQL 和 Hibernate。 我的错误是没有 map

 Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: songs is not mapped [from songs]
    at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
    at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
    at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93)
    at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3420)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3309)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)

我无法获取 allSong 方法。为什么 Hibernate 没有映射???

最佳答案

“from songs” 实际上是 HQL(HIbernate 查询语言),因此您应该使用与您的表相对应的 OBJECT NAME

在这种情况下,尝试“来自歌曲”

关于java - hibernate 未映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29597392/

相关文章:

java - Spring Boot 预处理 JSON 数据

spring - Spring ExceptionHandler 如何处理运行时异常

java - 如何单击表格中的元素 按特定文本搜索

java - 检查Java中实例的类

java - Spring MVC - 清理字段

java - @XmlElement 是否可以使用非标准名称注释方法?

mysql - 更新sql行而不删除数据

mysql - 切片类型后循环

java - 将 AWS Elastic Beanstalk 与 Java/BlazeDS/Spring 应用程序结合使用

mysql - 使用 like 和 order by 查询非常慢