hibernate外键关联!

venus224 2008-07-28 10:04:40
三张表,一对多关系
Purchaser表 Purconn表 Purlist表
purseq 主键 pucseq 主键 purlseq 主键
purflag purseq 外键 purlcode
purway purLseq 外键 purlname
purLimt purlmon

一条Purchaser中记录对应多条Purlist表中记录 Purconn是关系表
我现在知道 Purchaser的主键 要去查它对应的Purlist中的记录 该怎么查??????
Hibernate 映射的Purconn 信息是
private String pucseq;
private Purchaser purchaser;
private Purclist purclist;


// Constructors

/** default constructor */
public AbstractPurconn() {
}


/** full constructor */
public AbstractPurconn(Purchaser purchaser, Purclist purclist) {
this.purchaser = purchaser;
this.purclist = purclist;

}

映射文件

<hibernate-mapping>
<class name="com.yitong.po.capital.Purconn" table="PURCONN" schema="ERPT1104">
<id name="pucseq" type="java.lang.String">
<column name="PUCSEQ" length="32" />
<generator class="uuid.hex" />
</id>
<many-to-one name="purchaser" class="com.yitong.po.capital.Purchaser" fetch="select">
<column name="PURSEQ" length="32" not-null="true" />
</many-to-one>
<many-to-one name="purclist" class="com.yitong.po.capital.Purclist" fetch="select">
<column name="PURLSEQ" length="32" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>

映射过来的是对象而不是字段 我该怎么查呢?????????????
最好给出例子!
...全文
1240 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
venus224 2008-07-28
  • 打赏
  • 举报
回复
谢谢!
我看看去!
Landor2004 2008-07-28
  • 打赏
  • 举报
回复
上面的所有的属性都要事先其get和set方法,这是必需的!
Landor2004 2008-07-28
  • 打赏
  • 举报
回复
给你个例子,如果你有hibernate reference帮助文件的话,你就去学习一下,这是上面我摘下来的例子
首先说明一下,你的是多对多的关系,那么这种关系,不需要建立中间表的实体类,只需要建立两个表对应的类即可,例如
PERSON表和EVENT表之间是多对多的关系,中间关联表是PERSON_EVENT,他们的映射关系如下
public class Person {
private Long id;
private int age;
private String firstname;
private String lastname;

private Set events = new HashSet();

public Set getEvents() {
return events;
}

public void setEvents(Set events) {
this.events = events;
}
}


<class name="xxx.Person" table="PERSON">
<id name="id" column="PERSON_ID">
<generator class="native"/>
</id>
<property name="age"/>
<property name="firstname"/>
<property name="lastname"/>

<set name="events" table="PERSON_EVENT">
<key column="PERSON_ID"/>
<many-to-many column="EVENT_ID" class="xxx.Event"/>
</set>

</class>



public class Event {
private Long id;
private Set participants = new HashSet();

public Set getParticipants() {
return participants;
}

public void setParticipants(Set participants) {
this.participants = participants;
}
}

<class name="xxx.Event" table="EVENT">
<id name="id" column="EVENT_ID">
<generator class="native"/>
</id>
<set name="participants" table="PERSON_EVENT" inverse="true">
<key column="EVENT_ID"/>
<many-to-many column="PERSON_ID" class="xxx.Person"/>
</set>
</class>

楼主照着弄一下,最好看下那个帮助文档
venus224 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Landor2004 的回复:]
引用 5 楼 venus224 的回复:
引用 4 楼 Landor2004 的回复:
purseq是Purchaser中的属性名

在pojo类中要不要添加purseq的gettter和setter方法?



当然要实现,你的这个映射本身就不规范,不过这样映射也可以
[/Quote]
我指的是要不要自己添加:
private String purseq;
然后生成getter和setter?
venus224 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Landor2004 的回复:]
引用 5 楼 venus224 的回复:
引用 4 楼 Landor2004 的回复:
purseq是Purchaser中的属性名

在pojo类中要不要添加purseq的gettter和setter方法?



当然要实现,你的这个映射本身就不规范,不过这样映射也可以
[/Quote]
有点明白了!
大哥!
能不能给我发一个例子啊!
谢谢!
Landor2004 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 venus224 的回复:]
引用 4 楼 Landor2004 的回复:
purseq是Purchaser中的属性名

在pojo类中要不要添加purseq的gettter和setter方法?

[/Quote]

当然要实现,你的这个映射本身就不规范,不过这样映射也可以
venus224 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Landor2004 的回复:]
purseq是Purchaser中的属性名
[/Quote]
大哥,如果能给一个实例就好了!
万分感激!!
十一文 2008-07-28
  • 打赏
  • 举报
回复
正对这个问题又点糊涂

借楼主的地方
顺便问哈

那影射关系该怎么些了

楼上的
大哥能给个实例吗?
venus224 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Landor2004 的回复:]
purseq是Purchaser中的属性名
[/Quote]
在pojo类中要不要添加purseq的gettter和setter方法?
Landor2004 2008-07-28
  • 打赏
  • 举报
回复
purseq是Purchaser中的属性名
venus224 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Landor2004 的回复:]
映射关系设置的有些问题,看到你的表结构,知道你是多对多的映射关系,映射方式不是像你这样
不过如你这样设置也可以通过

查询可以这么写

Java codeList<Purlist> purlists = session.createQuery(
"select p.purclist from Purconn as p where p.purchaser.purseq = ?")
.setLong(0, purseq)
.list();
[/Quote]
p.purchaser.purseq = ?"purseq要不要大写?
Landor2004 2008-07-28
  • 打赏
  • 举报
回复
映射关系设置的有些问题,看到你的表结构,知道你是多对多的映射关系,映射方式不是像你这样
不过如你这样设置也可以通过

查询可以这么写
List<Purlist> purlists = session.createQuery(
"select p.purclist from Purconn as p where p.purchaser.purseq = ?")
.setLong(0, purseq)
.list();

123516457 2008-07-28
  • 打赏
  • 举报
回复
1对多需要3张表????
lai_chao 2008-07-28
  • 打赏
  • 举报
回复
学习了

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧