HSQLDB Spring用户缺少权限

时间:2015-01-25 22:11:41

标签: java spring spring-mvc hsqldb

我的项目使用的是JDBC和Spring 3.

随着我的小项目的增长,我需要一些测试。我想为我的DAO层创建集成测试,但我无法使用嵌入式HSQL数据库。

以下是我收到的错误:Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: name

我的配置:

CREATE SCHEMA GIVEMEASHOW 

-- USE_CASE TABLE
CREATE TABLE SHOW (
    ID                          BIGINT          GENERATED BY DEFAULT AS IDENTITY,
    NAME                        VARCHAR(255)    DEFAULT NULL,
    ICON_URL                    VARCHAR(255)    DEFAULT NULL,
    PRIMARY KEY (ID),
    CONSTRAINT UNIQUE_SHOW_NAME UNIQUE (NAME)
);

我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations =
{ "classpath:gmas-db-cfg-test.xml" })
public class ShowDaoIT
{
    public static Logger    LOGGER  = Logger.getLogger(ShowDaoIT.class.getName());

    @Inject
    ShowDao                 showDao;

    @Test
    public void saveIT()
    {
        Show show = new Show();
        show.setIconUrl("show1_banner.png");
        show.setName("show1");
        showDao.save(show);
        showDao.list();
    }
}

dao方法:

@Override
    public void save(final Show show)
    {
        LOGGER.info("Saving a new Show");
        try
        {
            final String query = "insert into " + TABLE_NAME + " (name, icon_url) " + "VALUES (?, ?)";

            jdbcTemplate.update(new PreparedStatementCreator()
            {

                public PreparedStatement createPreparedStatement(Connection con) throws SQLException
                {
                    PreparedStatement ps = con.prepareStatement(query, new String[]
                    { "name", "icon_url" });
                    ps.setString(1, show.getName());
                    ps.setString(2, show.getIconUrl());
                    return ps;
                }
            }, keyHolder);
            show.setId(keyHolder.getKey().intValue());

        } catch (final Exception e)
        {
            e.printStackTrace();
        }
    }

一切正在我的mysql数据库上工作,我的网站工作正常。我只是无法在dao层上设置集成测试。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用HSQLDB服务器进行测试。如果需要,服务器可以提供mem:数据库。