Hibernate 带Ended对象的条件查询
下面是我的POJOHibernate 带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
@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();
}
}