GVKun编程网logo

Oracle CONNECT BY递归子级到父级查询,包括自我引用的最终父级(oracle递归查询子节点)

24

如果您想了解OracleCONNECTBY递归子级到父级查询,包括自我引用的最终父级的相关知识,那么本文是一篇不可错过的文章,我们将对oracle递归查询子节点进行全面详尽的解释,并且为您提供关于An

如果您想了解Oracle CONNECT BY递归子级到父级查询,包括自我引用的最终父级的相关知识,那么本文是一篇不可错过的文章,我们将对oracle递归查询子节点进行全面详尽的解释,并且为您提供关于Android从子级到父级Activity的自定义过渡、Hibernate注释了多对一不将子级添加到父级Collection的过程、Hibernate注释多对一不将子级添加到父级Collection、HTML5-跨浏览器iframe后消息-子级到父级?的有价值的信息。

本文目录一览:

Oracle CONNECT BY递归子级到父级查询,包括自我引用的最终父级(oracle递归查询子节点)

Oracle CONNECT BY递归子级到父级查询,包括自我引用的最终父级(oracle递归查询子节点)

在下面的例子中

id parent_id
A  A
B  A
C  B

select id,parent_id
from table
start with id = 'A'
connect by nocycle parent_id = prior id

我懂了

A A
B A
C B

在我的数据库中,表中有数百万行,而且层次结构又深又宽,我对所有子级都不感兴趣。我可以派生出我感兴趣的孩子。因此,我想打开查询并向START
WITH提供孩子ID。然后,我想递归输出父级,直到到达顶部。在我的情况下,顶部是id和parent_id相等的地方。这是我正在尝试的方法,但无法显示顶级父级。

select id,parent_id
from table
START WITH id = 'C'
CONNECT BY nocycle id = PRIOR parent_id

这给了我

C B
B A

它没有输出AA。可以这样做吗?我希望不会在输出中将parent_id显示为单独的列,而只是显示与该ID相关的名称。然后,该顺序隐含了层次结构。

Android从子级到父级Activity的自定义过渡

Android从子级到父级Activity的自定义过渡

我有2个活动. ActivityA是ActivityB的父Activity:

我的清单文件:

<activity
        android:name=".ActivityA"
        android:launchMode="singletop" />
    <activity
        android:name=".ActivityB"
        android:parentActivityName=".ActivityA"/>

我已经从ActivityA更改为ActivityB:

    final Intent intent = new Intent(this, ActivityB.class);
    startActivity(intent);
    overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);

很好但是现在,我也想更改从ActivityB返回到ActivityA时的过渡.在我的ActivityB中,我像这样重写了finish()方法:

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}

问题在于,仅当按下硬件后退按钮时才调用finish()方法,而在按下“后退箭头”(屏幕的左上角)时不调用finish()方法.

我也想要按下按钮时的自定义过渡.

enter image description here

有任何想法吗?

解决方法:

您可以通过以下方式做到:

@Override
    public boolean onoptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                  finish();
                  overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);

        }
        return super.onoptionsItemSelected(item);
    }

Hibernate注释了多对一不将子级添加到父级Collection的过程

Hibernate注释了多对一不将子级添加到父级Collection的过程

我有以下带注释的Hibernate实体类:

@Entitypublic class Cat {    @Column(name = "ID") @GeneratedValue(strategy = GenerationType.AUTO) @Id    private Long id;    @OneToMany(mappedBy = "cat", cascade = CascadeType.ALL, fetch = FetchType.EAGER)    private Set<Kitten> kittens = new HashSet<Kitten>();    public void setId(Long id) { this.id = id; }    public Long getId() { return id; }    public void setKittens(Set<Kitten> kittens) { this.kittens = kittens; }    public Set<Kitten> getKittens() { return kittens; }}@Entitypublic class Kitten {    @Column(name = "ID") @GeneratedValue(strategy = GenerationType.AUTO) @Id    private Long id;    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)    private Cat cat;    public void setId(Long id) { this.id = id; }    public Long getId() { return id; }    public void setCat(Cat cat) { this.cat = cat; }    public Cat getCat() { return cat; }}

我的意图是在Cat和Kitten之间建立双向的一对多/多对一关系,Kitten是“拥有方”。

我想发生的是,当我创建一个新的Cat,然后是一个引用该Cat的新 小猫时,我Cat上的这组小猫应该包含新的Kitten 。但是,在以下测试
中不会发生这种情况

@Testpublic void testAssociations(){    Session session = HibernateUtil.getSessionFactory().getCurrentSession();    Transaction tx = session.beginTransaction();    Cat cat = new Cat();    session.save(cat);    Kitten kitten = new Kitten();    kitten.setCat(cat);    session.save(kitten);    tx.commit();    assertNotNull(kitten.getCat());    assertEquals(cat.getId(), kitten.getCat().getId());    assertTrue(cat.getKittens().size() == 1); // <-- ASSERTION FAILS    assertEquals(kitten, new ArrayList<Kitten>(cat.getKittens()).get(0));}

即使在重新查询Cat之后,集合仍然为空:

// added before tx.commit() and assertionscat = (Cat)session.get(Cat.class, cat.getId());

我在这里对Hibernate期望过高吗?还是我自己来管理Collection的负担?在(注释)文档不作任何迹象表明我需要创造便利addTo*/
removeFrom*我的父对象的方法。

有人可以通过这种关系启发我对Hibernate的期望吗?或者,如果没有其他要求,请指向正确的Hibernate文档,该文档告诉我在这里应该发生的情况。

我该怎么做才能使父集合自动包含子实体?

答案1

小编典典

它不会自动添加。您必须自己添加。

我也不会直接打电话Kitten.setCat()。典型的模式是将方法放入Cat

public void addKitten(Kitten kitten) {  if (kittens == null) {    kittens = new HashSet<Kitten>();  }  kittens.add(kitten);  kitten.setCat(this);}

然后只需调用:

cat.addKitten(kitten);

Hibernate注释多对一不将子级添加到父级Collection

Hibernate注释多对一不将子级添加到父级Collection

我有以下带注释的Hibernate实体类:

@Entitypublic class Cat {    @Column(name = "ID") @GeneratedValue(strategy = GenerationType.AUTO) @Id    private Long id;    @OneToMany(mappedBy = "cat", cascade = CascadeType.ALL, fetch = FetchType.EAGER)    private Set<Kitten> kittens = new HashSet<Kitten>();    public void setId(Long id) { this.id = id; }    public Long getId() { return id; }    public void setKittens(Set<Kitten> kittens) { this.kittens = kittens; }    public Set<Kitten> getKittens() { return kittens; }}@Entitypublic class Kitten {    @Column(name = "ID") @GeneratedValue(strategy = GenerationType.AUTO) @Id    private Long id;    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)    private Cat cat;    public void setId(Long id) { this.id = id; }    public Long getId() { return id; }    public void setCat(Cat cat) { this.cat = cat; }    public Cat getCat() { return cat; }}

我的意图是在Cat和Kitten之间建立双向的一对多/多对一关系,Kitten是“拥有方”。

我想发生的事情是,当我创建一个新的Cat,然后是一个引用该Cat的新 小猫时,我Cat上的这组小猫应该包含新的Kitten 。但是,在以下测试
中不会发生这种情况

@Testpublic void testAssociations(){    Session session = HibernateUtil.getSessionFactory().getCurrentSession();    Transaction tx = session.beginTransaction();    Cat cat = new Cat();    session.save(cat);    Kitten kitten = new Kitten();    kitten.setCat(cat);    session.save(kitten);    tx.commit();    assertNotNull(kitten.getCat());    assertEquals(cat.getId(), kitten.getCat().getId());    assertTrue(cat.getKittens().size() == 1); // <-- ASSERTION FAILS    assertEquals(kitten, new ArrayList<Kitten>(cat.getKittens()).get(0));}

即使在重新查询Cat之后,集合仍然为空:

// added before tx.commit() and assertionscat = (Cat)session.get(Cat.class, cat.getId());

我在这里对Hibernate期望过高吗?还是我自己来管理Collection的负担?在(注释)文档不作任何迹象表明我需要创造便利addTo*/
removeFrom*我的父对象的方法。

有人可以通过这种关系启发我对Hibernate的期望吗?或者,如果没有其他要求,请指向正确的Hibernate文档,该文档告诉我在这里应该发生的情况。

我该怎么做才能使父Collection自动包含子Entity?

答案1

小编典典

它不会自动添加。您必须自己添加。

我也不会直接打电话Kitten.setCat()。典型的模式是将方法放入Cat

public void addKitten(Kitten kitten) {  if (kittens == null) {    kittens = new HashSet<Kitten>();  }  kittens.add(kitten);  kitten.setCat(this);}

然后只需调用:

cat.addKitten(kitten);

HTML5-跨浏览器iframe后消息-子级到父级?

HTML5-跨浏览器iframe后消息-子级到父级?

我的问题是我需要它以相反的方式工作(子级到父级),并且不知道如何定位父级窗口。

这是我的接收方代码(在父级中)-

function handlingMsg(e)
{alert("works")
    if(e.origin == "http://uc.dialogue.net")
        {
                var blah = e.data;
                alert(blah);    
        }
        else{alert("error");}
}
addEventListener("message",handlingMsg,true);

这是由简单形式(在子级中)触发的发送方功能-

   var text=$('.srchInput').val();
   window.parent.postMessage(text,"http://uc.dialogue.net");

我应该以其他方式定位父母吗?

干杯保罗

关于Oracle CONNECT BY递归子级到父级查询,包括自我引用的最终父级oracle递归查询子节点的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Android从子级到父级Activity的自定义过渡、Hibernate注释了多对一不将子级添加到父级Collection的过程、Hibernate注释多对一不将子级添加到父级Collection、HTML5-跨浏览器iframe后消息-子级到父级?的相关知识,请在本站寻找。

本文标签: