Struts + Spring + Hibernate를 사용하고 있으며 HQL을 제대로 실행하는 데 문제가 있습니다.Hibernate (HQL)에서 내부 조인에 문제가 발생했습니다.
나는 objectA, objectB, objectC 및 objectD 네 개의 개체가 있습니다. 오브젝트 A는 오브젝트 B와 일대 다의 관계를 가지고 있으며, 오브젝트 B는 FK ObjectA.Id를 가지고 있으므로 관계가 있습니다. 이 패턴은 객체를 통해 계속됩니다. 즉, 객체 B는 객체 C 등과 1 대 다수의 관계를 가지고 있습니다.
지금부터 "FROM ObjectXVO WHERE objectXId =?" 개체 목록을 얻으려면. 내 응용 프로그램이 복잡 해져서 좀 더 복잡한 HQL을 할 필요가있다.
기본적으로 주어진 ObjectBVO.objectBId 주어진 ObjectB를 가진 ObjectA의 특정 열, 주어진 ObjectB의 일부인 ObjectCs의 특정 열 및 ObjectDs의 모든 열을 반환해야합니다. 지정된 ObjectB의 일부인 ObjectC의 일부
이것은 Microsoft SQL Server에서 사용하고있는 SQL 문입니다. 그것은 작동하고 잘하면 내 모델을 보여줍니다.
SELECT ObjectB.ObjectBID, ObjectB.ObjectBName, ObjectC.ObjectCDescription,
ObjectD.*, ObjectA.ObjectAID
FROM ObjectB, ObjectC, ObjectD, ObjectA
WHERE ObjectB.ObjectBID = 2
AND ObjectA.ObjectAID = ObjectB.ObjectAID
AND ObjectB.ObjectBID = ObjectC.ObjectBID
AND ObjectD.ObjectCID = ObjectC.ObjectCID
이
은 DAOimpl의 코드가 나는 목록 < ObjectDVO>List<ObjectDVO> objectDs;
try{
String hql = "SELECT ObjectBVO.objectBId, ObjectBVO.objectBName,
ObjectCVO.objectCDescription, ObjectCVO.objectCId,"
+" ObjectAVO.objectAId, ObjectAVO.objectAName, ObjectDVO"
+" FROM ObjectBVO, ObjectAVO, ObjectCVO, ObjectDVO"
+" WHERE ObjectBVO.objectBId = ?"
+" AND ObjectAVO.objectAId = ObjectBVO.objectAId"
+" AND ObjectBVO.objectBId = ObjectCVO.objectBId"
+" AND ObjectDVO.objectCId = ObjectCVO.objectCId";
objectDs = getHibernateTemplate().find(hql, objectBID);
}
이 그냥 던져 오류가 null의 말을 반환하는 데 사용하려고 해요 개체입니다. 나는 HQL 문서와 튜토리얼을 살펴 보았지만이 작업을 여러개의 VO 객체로하는 것은 분명하지 않다. 누구든지 도와 줄 수 있습니까? 감사.
대단한 답변을 보내 주셔서 감사합니다.나는 이것을 시험해보고 그것을 작동시킬 수 있다면 그것을 대답으로 표시 할 것입니다. – user1287523
은 아름답게 작동합니다. – user1287523