如果您想了解OracleCONNECTBY递归子级到父级查询,包括自我引用的最终父级的相关知识,那么本文是一篇不可错过的文章,我们将对oracle递归查询子节点进行全面详尽的解释,并且为您提供关于An
如果您想了解Oracle CONNECT BY递归子级到父级查询,包括自我引用的最终父级的相关知识,那么本文是一篇不可错过的文章,我们将对oracle递归查询子节点进行全面详尽的解释,并且为您提供关于Android从子级到父级Activity的自定义过渡、Hibernate注释了多对一不将子级添加到父级Collection的过程、Hibernate注释多对一不将子级添加到父级Collection、HTML5-跨浏览器iframe后消息-子级到父级?的有价值的信息。
本文目录一览:- Oracle CONNECT BY递归子级到父级查询,包括自我引用的最终父级(oracle递归查询子节点)
- Android从子级到父级Activity的自定义过渡
- Hibernate注释了多对一不将子级添加到父级Collection的过程
- Hibernate注释多对一不将子级添加到父级Collection
- HTML5-跨浏览器iframe后消息-子级到父级?
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的自定义过渡
我有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()方法.
我也想要按下按钮时的自定义过渡.
有任何想法吗?
解决方法:
您可以通过以下方式做到:
@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实体类:
@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实体类:
@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后消息-子级到父级?
我的问题是我需要它以相反的方式工作(子级到父级),并且不知道如何定位父级窗口。
这是我的接收方代码(在父级中)-
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后消息-子级到父级?的相关知识,请在本站寻找。
本文标签: