-1

Java プログラミングでいくつか問題があります。私の場合、getHibernateTemplateセッション オブジェクトに直接アクセスせずに、Spring を介して Hibernate 基準クエリを使用しています。

JPA アノテーションでマッピングされた親子関係があります。これが私のDAOメソッドです

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();
            }
        });
    }

parent匿名クラスに渡すため、最終としてマークしました。コードを実行すると、Hibernate はクエリ ( ... where parentId = ?) を実行しますが、結果が得られません。mysql で実行すると、正しいparentId結果が返されます。

デバッグ時に、Eclipse がparent無名クラス内の from の値を検査できないことがわかります。どうしたの?これを修正するにはどうすればよいですか?

[編集] これが Pojo です。私は親を制御できません(ソースでさえありません。自動逆コンパイルのためにF3を押しただけです)

@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;

}
4

2 に答える 2