我从一本书的例子开始。它实际上是一个虚拟导向的,我对本书给出的代码有疑问。
这是代码;
@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
自动在DB上看到它们<property name="eclipselink.ddl-generation" value="create-tables"/>
答案 0 :(得分:2)
使用@JoinColumn
注释将外部列名称指定为address_fk
而不是默认address_id
,这很好。
可能不起作用的是@GeneratedValue与String。根据规范,只有生成主键的整数类型才是可移植的。