我是这么写的 A:@ManyToOne @JoinColumn(name="type",referencedColumnName="TID") public B getB() { return b; } B:@OneToMany(mappedBy="b",cascade={CascadeType.ALL},fetch=FetchType.LAZY) public Set<A> getA() { return a; }[hql] from A a where a.b.tid = ? desc 查询后没有结果,也不报错,真是急人
@ManyToOne
@JoinColumn(name="id", referencedColumnName="tid")
public B b;
如果是按多对一,代码如下(一对一与之也差不多):A.javaprivate Integer id;@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy="tid")
private List<B> bs = new ArrayList<B>(0);//getter && setter 略
B.javaprivate Integer id;@ManyToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name="tid")
private A tid;private String tname;//getter && setter 略
不知道你的意思是不是通过B的tname得到对象A,若这样的话,下面就是答案:
String hql = "select b.tid from B b where b.tname=?1"
是这样:
查询后结果让A.B.tname来取值
显示结果这么a.b.tname来取值tname 从A表取B表的tname值另外,7楼的的注解
不能a.b.tname来取值啊
A:@ManyToOne
@JoinColumn(name="type",referencedColumnName="TID")
public B getB() {
return b;
}
B:@OneToMany(mappedBy="b",cascade={CascadeType.ALL},fetch=FetchType.LAZY)
public Set<A> getA() {
return a;
}[hql]
from A a where a.b.tid = ? desc
查询后没有结果,也不报错,真是急人
注解中指定的值tid已经是底层数据库中的了,而from A却是Hibernate工具面向A、B这个类,所以这样肯定不行,应该就是直接a.b=?
然后在query.setParameter(0, b);
其中b就是B类对象(例如b=new B(1);)