对于hibernate支持,我有一个这样的域对象注释。
@Entity
@Table(name = "INPUT")
public class AppInput {
/**
* Unique id for this request
*/
@Id
@GeneratedValue
@Column(name = "INPUT_ID")
private long requestId;
/**
*
*/
@Column(name = "EMAIL_ID")
private String emailId;
/**
*
*/
@Column(name = "REQUEST_DATE")
private Date requestDate;
/**
*
*/
@Column(name = "INPUT_STATUS")
private char status;
/**
*
*/
@Column(name = "EXPECTED_ORDER_DATE")
private Date expectedOrdDt;
//Getter and setters
}
属性emailId是一个外键,指的是User表中的say emailId列。假设我将这样的属性添加到AppInput.java
private User userDetails;
我如何对此进行注释,以便每当我从db获取AppInput时,相应的用户详细信息也会被填充?
答案 0 :(得分:21)
属性emailId是一个外键,指的是User表中的say emailId列。
然后不要添加emailId
属性,添加User
。
(...)我如何对此进行注释,以便每当我从db获取AppInput时,相应的用户详细信息也会被填充?
不确定,因为它可能是ManyToOne
或OneToOne
,但我认为它是ManyToOne
:
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="USERDETAILS_EMAIL_ID", referencedColumnName="EMAIL_ID")
private User userDetails;
fetch
注释元素用于演示目的,EAGER
实际上是默认值。 name
中的referencedColumn
和JoinColumn
注释元素也是可选的。以下是JPA规范的简短摘要:
11.1.21 JoinColumn Annotation
JoinColumn
注释用于 指定用于加入实体的列 关联或元素集合。表20列出了注释元素 可以指定的
JoinColumn
注释及其注释 默认值。如果
JoinColumn
注释本身 默认情况下,单个连接列是 假设和默认值 表20中描述了适用。
name
注释元素定义 外键列的名称。 剩下的注释元素 (referencedColumnName
除外) 请参阅此栏并具有相同的内容Column
的语义 注解。如果
referencedColumnName
元素是 丢失,假设外键 参考的主键 参考表。
有关完整和详尽的详细信息,请参阅规范中的表20 。