Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Hibernate 带Ended对象的条件查询_Hibernate - Fatal编程技术网

Hibernate 带Ended对象的条件查询

Hibernate 带Ended对象的条件查询,hibernate,Hibernate,下面是我的POJO @Entity @Table(name = "XXXXXXXX") public class MyDTO1 implements Serializable{ @Embeded private MyDTO2 myDTO2; private Integer int1; } @Embedable public class MyDTO2 implements Serializable{ private String string1; } 实际等级: pulic class T

下面是我的POJO

@Entity
@Table(name = "XXXXXXXX")
public class MyDTO1 implements Serializable{

@Embeded
private MyDTO2 myDTO2;
private Integer int1;
}

@Embedable
public class MyDTO2 implements Serializable{

private String string1;
}
实际等级:

pulic class Test(){

private void testMethod(){
Session session = getSession();
List<ClientProgramINDTO> clientProgramDto = session.createCriteria(ClientProgramINDTO.Class)
.add(Restrictions.eq("int1", 1))
.add(Restrictions.eq("myDTO2.string1", "Test")).list();
}


}

解决方法是使用
元模型


我希望能解决你的问题。请查看并详细解释。

您的代码中有一些错误:

@Embedded
@Embedded
在实体
MyDTO1

@embedded
在实体
MyDTO2

pulic class Test(){
应该是
public class Test{

ClientProgramINDTO.Class
应该是
ClientProgramINDTO.Class

因此,如果不解决这些编译问题,就无法运行该程序

另外,您还没有提供什么是
ClientProgramINDTO
对象以及它与其他实体的关系,我假设
ClientProgramINDTO
MyDTO1
相同

如果我基于我的假设继续,那么代码中就没有问题。以下是我尝试过的示例代码:

public class Test {
    public static void main(String[] args) {
        saveData();
        testMethod();
        HibernateUtil.getSessionFactory().close();
    }
    private static void saveData() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.getTransaction().begin();

        ClientProgramINDTO c = new ClientProgramINDTO();
        c.setInt1(1);
        c.setMyDTO2(new MyDTO2("Test"));
        session.save(c);

        session.getTransaction().commit();
    }
    private static void testMethod() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.getTransaction().begin();
        List<ClientProgramINDTO> clientProgramDto = session
                .createCriteria(ClientProgramINDTO.class)
                .add(Restrictions.eq("int1", 1))
                .add(Restrictions.eq("myDTO2.string1", "Test")).list();
        for (ClientProgramINDTO clientProgramINDTO : clientProgramDto) {
            System.out.println(clientProgramINDTO.getInt1() + " "+ clientProgramINDTO.getMyDTO2().getString1());

        }
        session.getTransaction().commit();      
    }
}
公共类测试{
公共静态void main(字符串[]args){
saveData();
testMethod();
HibernateUtil.getSessionFactory().close();
}
私有静态void saveData(){
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
session.getTransaction().begin();
ClientProgramINDTO c=新的ClientProgramINDTO();
c、 setInt1(1);
c、 设置MyDTO2(新MyDTO2(“测试”);
会议.保存(c);
session.getTransaction().commit();
}
私有静态void testMethod(){
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
session.getTransaction().begin();
List clientprogrammedto=会话
.createCriteria(ClientProgramINDTO.class)
.add(限制条件eq(“int1”,1))
.add(Restrictions.eq(“myDTO2.string1”,“Test”)).list();
for(ClientProgramINDTO ClientProgramINDTO:clientprogrammedto){
System.out.println(clientProgramINDTO.getInt1()+“”+clientProgramINDTO.getMyDTO2().getString1());
}
session.getTransaction().commit();
}
}
此程序的输出:


1测试您正在使用哪个版本的hibernate您的
clientprogrammindto
pojo是什么样子的,它与其他pojo有什么关系
public class Test {
    public static void main(String[] args) {
        saveData();
        testMethod();
        HibernateUtil.getSessionFactory().close();
    }
    private static void saveData() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.getTransaction().begin();

        ClientProgramINDTO c = new ClientProgramINDTO();
        c.setInt1(1);
        c.setMyDTO2(new MyDTO2("Test"));
        session.save(c);

        session.getTransaction().commit();
    }
    private static void testMethod() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.getTransaction().begin();
        List<ClientProgramINDTO> clientProgramDto = session
                .createCriteria(ClientProgramINDTO.class)
                .add(Restrictions.eq("int1", 1))
                .add(Restrictions.eq("myDTO2.string1", "Test")).list();
        for (ClientProgramINDTO clientProgramINDTO : clientProgramDto) {
            System.out.println(clientProgramINDTO.getInt1() + " "+ clientProgramINDTO.getMyDTO2().getString1());

        }
        session.getTransaction().commit();      
    }
}