xt836 2008-12-09 11:03
浏览 197
已采纳

hibernate值类型集合映射-一个顾客多个地址

顾客:
Customer
[code="java"]
public class Customer {

private Long id;
private String name;

private Set Addresses = new HashSet();

     //省略相应的getter/setter方法

}
[/code]
表:

c2

id int
name varchar(20)

地址:
[code="java"]
public class Address {
private String city;
private String zipcode;

public Address () {}
     //省略相应的getter/setter方法

}
[/code]

表:

a2

customer_id int,
city varchar(10),
zipcode varchar(10),
foreign key(customer_id) references c2(customer_id)

首先我想问一下,需不需要为Address编写Address.hbm.xml文件。如果要怎么写那块。
第二,Customer.hbm.xml中的set需不需要设置inverse
第三,Customer和Address能不能级联保存,如果能怎么写

不好意思,实在是hibernate新手,请大家帮我一下,多说点集合映射的东西给我,谢谢了!
[b]问题补充:[/b]
[code="java"]







[/code]
我昨天下午是这么配来着,似乎是能运行,也没有给Address建立hbm.xml文件。
我之所以有这个问题是因为刚买了本《Hibernate in Action》第二版。里面比较强调[color=red][b]值类型和实体类型的区别[/b][/color],也谈到了值类型的集合的映射,就像我现在处理的Address(顾客的地址),我是自己想试一下,所以有了这个问题。
[b]问题补充:[/b]
最后,在实际开发中,处理这种一个人有多个地址的,怎么解决?谢谢!

  • 写回答

3条回答 默认 最新

  • davepkxxx 2008-12-10 10:54
    关注

    好吧,我的建议是,除了纯多对多表,其他的表都必须要一个主键,hibernate的思想也是这样的

    [code="sql"]
    --用户表
    create table T_CUST
    (
    CUST_ID int,
    CUST_NAME varchar(10),
    constraint PK_CUST_ID primary key (CUST_ID)
    );
    --地址表
    create table T_ADDRESS
    (
    ADDRESS_ID int,
    CITY varchar(20),
    STREET_NBR varchar(20),
    CUST_ID int,
    constraint PK_ADDRESS_ID primary key (ADDRESS_ID),
    constraint FK_ADDRESS_CUST foreign key (CUST_ID) references T_CUST (CUST_ID)
    );
    [/code]

    然后所有的实体类都要实现序列化接口。
    [code="java"]
    // 客户pojo
    public class Cust implements Serializable {
    private Long custId;
    private String custName;
    private List

    addressList = new ArrayList (0);
    // ... 剩下的是构造方法和getter、setter
    }
    // 地址pojo
    public class Address implements Serializable {
    private Long addressId;
    private String city;
    private String streetNbr;
    private Cust cust;
    // ... 剩下的是构造方法和getter、setter
    }
    [/code]

    [code="xml"]

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
















    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


















    [/code]

    貌似就是这个样子了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)