자바 프로그래밍에 몇 가지 문제가 있습니다. 필자의 경우, 세션 객체에 직접 액세스하지 않고 Spring의 getHibernateTemplate
을 통해 Hibernate criteria 쿼리를 사용하고있다.익명 클래스에 객체 참조 전달하기
JPA 주석으로 매핑 된 부모 - 자식 관계가 있습니다. 저는 여기에 익명의 클래스에 전달 해요 때문에 나는 마지막으로 parent
을 표시 한
public List<Child> findByParent(final Parent parent)
{
return getHibernateTemplate().executeFind(new HibernateCallback<List<Child>>()
{
@Override
public List<Child> doInHibernate(Session session) throws HibernateException, SQLException
{
return session.createCriteria(Child.class)
.add(Restrictions.eq("parent", parent))
.list();
}
});
}
내 DAO 방법입니다. Hibernate 코드를 실행하면 (... where parentId = ?
) 쿼리를 수행하지만 아무 결과도 얻지 못합니다. mysql에서 정확히 parentId
을 실행하면 결과가 반환됩니다.
디버깅 할 때 Eclipse가 익명 클래스에서 parent
의 값을 검사 할 수 없음을 알았습니다. 뭐가 문제 야? 이 문제를 어떻게 해결할 수 있습니까?
[편집] 여기는 Pojo가 있습니다. 내가 부모를 통제 없다
@Entity
@SequenceGenerator(name = "SEQ_STORE", sequenceName = "SEQ_CHILD")
@Table(name = "TA_CHILD", uniqueConstraints = { @UniqueConstraint(columnNames = { "A_FIELD", "PARENT_ID" }) })
public class Immobile
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "CHILD_ID")
protected int id;
@JoinColumn(name = "PARENT_ID")
@ManyToOne(fetch = FetchType.LAZY, optional = false, targetEntity = Organization.class)
protected Parent parent;
@GeneratedValue
@Column(name = "PARENT_ID", insertable = false, updatable = false)
protected String parentId;
}
// Compiled from Parent.java (version 1.6 : 50.0, super bit)
@javax.persistence.Entity
@javax.persistence.Table(name="TA_PARENT")
public class org.Partent extends org.ExtensibleBase implements java.io.Serializable {
// Field descriptor #161 J
private static final long serialVersionUID = 1L;
// Field descriptor #166 Ljava/lang/String;
@javax.persistence.Id
@javax.persistence.Column(name="PARENT_ID",
nullable=false,
length=(int) 20)
private java.lang.String id;
}
당신에게 POJO를 게시하시기 바랍니다 수 Child.java 및 Parent.java –
'parent'이되지 않는 " 통과 "했다. 오히려 '부모'는 익명의 클래스에 의해 캡쳐됩니다. – newacct