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但我将什么类型用于收集和裁判?谢谢

4

1 回答 1

0

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

集合也将基于类的 id。对于 1 到 N 的关系,可以使用 N 侧的列。因此,如果一个客户有多个地址,但一个地址从不属于一个以上的客户,那么您可以将客户的 id 存储在地址表中以存储关系。如果是 N 到 M,您将需要一个额外的所谓的连接表,它存储成对的客户 ID + 地址 ID。帐户的故事相同。

顺便说一句,许多 JPA 提供商可以为您生成表格,请参阅他们的手册。

如果你是 JPA 的新手,你应该得到一本关于它的好书。几个教程不会为您提供足够深入的知识来很好地使用它。我个人读过 Pro EJB 3: Java Persistence API。

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

于 2012-08-09T11:03:00.843 回答