1

我从书中的一个例子开始。这真的是一个面向虚拟的,我对这本书给出的代码有疑问。

这是代码;

@Entity
public class Customer {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;

@OneToOne (fetch = FetchType.LAZY,
           cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
@JoinColumn(name = "address_fk")
private Address address;
//getter, setter, Constructor

--//----------------------------------------

@Entity
public class Address {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private String id;
private String city;
private String street;
private String number;

在这里,它抱怨 JoinColumn 注释。它说找不到列address_fk。

这是与 IDE 相关的问题吗?我错过了什么吗?

编辑:数据库中尚未创建表。我希望它们能够通过我的 persistence.xml 自动出现在数据库中

<property name="eclipselink.ddl-generation" value="create-tables"/>
4

1 回答 1

2

使用@JoinColumn注释来指定外部列名address_fk而不是默认值address_id是可以的。

可能不起作用的是带有字符串的@GeneratedValue 。根据规范,只有作为生成主键的整数类型是可移植的。

于 2012-08-14T08:59:39.567 回答