Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将java引用类型映射到数据库列类型_Java_Jdbc_Jpa 2.0 - Fatal编程技术网

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

如何将java引用类型映射到数据库列类型,java,jdbc,jpa-2.0,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<Ac

假设我有这样的课

@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实现了可序列化{
私有int-id;
私有字符串名;
私有字符串lastName;
私人裁判;
私人收藏地址;
私人收款账户;
.....
}//类末客户
@实体
公共类仲裁实现了可序列化{
私有int-id;
私有字符串名称;
私有字符串注释;
....
}//下课裁判
@实体
公共类帐户实现可序列化{
私有int-id;
私人双平衡;
私有字符串accountType;
...
}
@实体
公共类地址实现可序列化{
私有int-id;
专用字符串地址线;
私人国家;
私人字符串邮政编码;
...
}
现在,如果我在名为Customer的数据库中创建表。那么我将使用哪种类型作为类型
裁判
收藏
收藏
。比如,如果我设置了列id,那么它的类型将是
INTEGER
,字符串更改为
VARCHAR
,但是我使用什么类型来收集和引用?
谢谢

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

集合还将基于类的id。对于1到N关系,可以使用N侧的列。因此,如果一个客户有多个地址,但一个地址永远不属于多个客户,那么您可以将该客户的id存储在地址表中以存储关系。如果是N到M,您将需要一个额外的所谓连接表,该表存储两对客户id+地址id。帐户的情况也一样

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

如果你是JPA新手,你应该得到一本关于它的好书。几篇教程并不能给你足够的深度知识来很好地使用它。我个人读过ProEJB3:JavaPersistenceAPI


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

我遵循EJB3开发者指南。此外,我还将学习本教程[链接]。是的,我是JPA的新手。我在客户和地址之间有多对多关系,在客户和帐户之间有1对多关系。