Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring、Hibernate、TestNG和h2:org.dbunit.dataset.NoSuchTableException:用户_Java_Spring_Hibernate_Testng_H2 - Fatal编程技术网

Java Spring、Hibernate、TestNG和h2:org.dbunit.dataset.NoSuchTableException:用户

Java Spring、Hibernate、TestNG和h2:org.dbunit.dataset.NoSuchTableException:用户,java,spring,hibernate,testng,h2,Java,Spring,Hibernate,Testng,H2,我正在尝试测试DAO层。 该项目包括以下技术:Spring4、Hibernate5、MySQL、H2、Mockito、testNG、dbUnit和其他 这里是pom.xml中的依赖项片段: 4.2.4.1发布 5.1.0.1最终版本 1.0.0.1决赛 5.1.38 1.10.19 假的 6.9.4 1.3.176 2.2 朱尼特 . dbConn中几乎所有字段都为空 对测试用户DAO进行分类: public class UserDAOTest extends DAOTest { pr

我正在尝试测试DAO层。 该项目包括以下技术:Spring4、Hibernate5、MySQL、H2、Mockito、testNG、dbUnit和其他

这里是pom.xml中的依赖项片段:


4.2.4.1发布
5.1.0.1最终版本
1.0.0.1决赛
5.1.38
1.10.19
假的
6.9.4
1.3.176
2.2
朱尼特
. dbConn中几乎所有字段都为空

对测试用户DAO进行分类:

public class UserDAOTest extends DAOTest {
    private final static Logger log = Logger.getLogger(UserDAOTest.class.getName());

    @Autowired
    private IUserDAO userDAO;

    @Override
    protected IDataSet getDataSet() throws Exception {
        return new FlatXmlDataSet(this.getClass().getClassLoader().getResourceAsStream("user.xml"));
    }

    @Test
    public void findById(){
        if (userDAO == null) log.info("user dao is null");
        else log.info("user dao is: " + userDAO.toString());
        UserEntity ue = userDAO.findByPK("ivan@email.com");
        log.debug("Find by id: " + ue.toString());
        assertNotNull("Don't found user by id", ue);
    }
}
以及user.xml的以下内容:


据我所知,该错误引用了该文件中的“user”标记

这里还有用户的POJO:

@Entity
@Table(name = "user", schema = "srtd")
public class UserEntity {
    private String email;
    private String password;
    private PassangerEntity idPassanger;

    public UserEntity() {}

    public UserEntity(String email, String password, PassangerEntity idPassanger) {
        this.email = email;
        this.password = password;
        this.idPassanger = idPassanger;
    }

    @Id
    @Column(name = "email")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Basic
    @Column(name = "password")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @OneToOne(optional = false, cascade = CascadeType.ALL)
    @JoinColumn(name = "idPassanger", unique = true, nullable = false)
    public PassangerEntity getIdPassanger(){
        return idPassanger;
    }

    public void setIdPassanger(PassangerEntity idPassanger){
        this.idPassanger = idPassanger;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        UserEntity that = (UserEntity) o;

        if (email != null ? !email.equals(that.email) : that.email != null) return false;
        if (password != null ? !password.equals(that.password) : that.password != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = email != null ? email.hashCode() : 0;
        result = 31 * result + (password != null ? password.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "UserEntity{" +
                "email='" + email + '\'' +
                ", password='" + password + '\'' +
                ", idPassanger=" + idPassanger.toString() +
                '}';
    }
}
在完整的错误堆栈中,我认为有必要注意以下日志:

Caused by: org.h2.jdbc.JdbcSQLException:
Schema "SRTD" not found; SQL statement:
alter table srtd.user add constraint FKec3wluojmxshecxg06rihvlwf foreign key (idPassanger) references srtd.passanger [90079-176]
如果有必要,那么我将列出一个完整的错误堆栈,事实上它有很大


请帮助我解决这个问题,我已经花了一整天的时间在上面。

尝试从
实体
注释中删除属性
schema=“srtd”
,因为
dataSource.setUrl(…)
方法已经有了它。

我想问题可能是因为敏感的架构名称。你能试试更新后的url
jdbc:h2:mem:srtd;DB_CLOSE_DELAY=-1;DB_关闭_上的_退出=错误;IGNORECASE=TRUE
。不确定是否需要
schema=“srtd”
entity
注释中,因为上面的url已经有了注释。是!你是对的。我删除了注释方案实体,它成功了。我真的很感谢你!
public class UserDAOTest extends DAOTest {
    private final static Logger log = Logger.getLogger(UserDAOTest.class.getName());

    @Autowired
    private IUserDAO userDAO;

    @Override
    protected IDataSet getDataSet() throws Exception {
        return new FlatXmlDataSet(this.getClass().getClassLoader().getResourceAsStream("user.xml"));
    }

    @Test
    public void findById(){
        if (userDAO == null) log.info("user dao is null");
        else log.info("user dao is: " + userDAO.toString());
        UserEntity ue = userDAO.findByPK("ivan@email.com");
        log.debug("Find by id: " + ue.toString());
        assertNotNull("Don't found user by id", ue);
    }
}
@Entity
@Table(name = "user", schema = "srtd")
public class UserEntity {
    private String email;
    private String password;
    private PassangerEntity idPassanger;

    public UserEntity() {}

    public UserEntity(String email, String password, PassangerEntity idPassanger) {
        this.email = email;
        this.password = password;
        this.idPassanger = idPassanger;
    }

    @Id
    @Column(name = "email")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Basic
    @Column(name = "password")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @OneToOne(optional = false, cascade = CascadeType.ALL)
    @JoinColumn(name = "idPassanger", unique = true, nullable = false)
    public PassangerEntity getIdPassanger(){
        return idPassanger;
    }

    public void setIdPassanger(PassangerEntity idPassanger){
        this.idPassanger = idPassanger;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        UserEntity that = (UserEntity) o;

        if (email != null ? !email.equals(that.email) : that.email != null) return false;
        if (password != null ? !password.equals(that.password) : that.password != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = email != null ? email.hashCode() : 0;
        result = 31 * result + (password != null ? password.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "UserEntity{" +
                "email='" + email + '\'' +
                ", password='" + password + '\'' +
                ", idPassanger=" + idPassanger.toString() +
                '}';
    }
}
Caused by: org.h2.jdbc.JdbcSQLException:
Schema "SRTD" not found; SQL statement:
alter table srtd.user add constraint FKec3wluojmxshecxg06rihvlwf foreign key (idPassanger) references srtd.passanger [90079-176]