如何将java引用类型映射到数据库列类型

时间:2012-08-09 10:42:06

标签: java jdbc jpa-2.0

假设我有这样的课程

@Entity
public class Customer implements Serializable {
    private int id;
    private String firstName;
    private String lastName;
    private Referee referee;
    private Collection<Address> addresses;
    private Collection<Account> accounts;
    .....
} //end of class Customer

@Entity
public class Referee implements Serializable {
    private int id;
    private String name;
    private String comments;
    ....
} //end of class Referee

@Entity 
public class Account implements Serializable {
    private int id;
    private double balance;
    private String accountType;
    ...
}

@Entity
public class Address implements Serializable {
    private int id;
    private String addressLine;
    private String country;
    private String postCode;
    ...
}

现在,如果我在名称Customer的数据库中创建表。那么我将使用哪种类型RefereeCollection<Address>Collection<Account>。就像我创建列id一样,那么它的类型将是INTEGER,字符串更改为VARCHAR但是我用于收集和裁判的类型是什么? 感谢

1 个答案:

答案 0 :(得分:0)

裁判字段在数据库中是整数,因为它必须存储类型为int的Referee类的id字段。

收藏也将基于班级的ID。对于1到N的关系,可以使用N侧的列。因此,如果客户有多个地址但地址永远不属于一个客户,那么您可以将客户的ID存储在地址表中以存储关系。如果它是N到M,您将需要一个额外的所谓的连接表,它存储客户ID +地址ID的配对。同样的帐户故事。

很多JPA提供商可以为你生成表格,看看他们的手册如何。

如果你是JPA的新手,你应该得到一本关于它的好书。一些教程不会给你足够深入的知识来使用它。我个人已经阅读了Pro EJB 3:Java Persistence API。

在学习JPA时,netbeans IDE可以提供很大的帮助,并且它会为您提供许多有用的提示来注释您的实体。例如,它会注意到您的集合需要额外的注释,并且会为您提供一对多或多对多的选择以及单向或双向。