Hibernate注释和外键关系

use*_*101 7 java orm hibernate jpa

对于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
   }
Run Code Online (Sandbox Code Playgroud)

属性emailId是一个外键,指的是User表中的say emailId列.让我说我向AppInput.java添加这样的属性 private User userDetails; 我如何对此进行注释,以便每当我从db获取AppInput时,相应的用户详细信息也会被填充?

Pas*_*ent 21

属性emailId是一个外键,指的是User表中的say emailId列.

然后不要添加emailId属性,添加一个User.

(...)我如何对此进行注释,以便每当我从db获取AppInput时,相应的用户详细信息也会被填充?

不确定,因为它可能是一个ManyToOneOneToOne但我认为它是ManyToOne:

@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="USERDETAILS_EMAIL_ID", referencedColumnName="EMAIL_ID")
private User userDetails;
Run Code Online (Sandbox Code Playgroud)

fetch注释元素用于演示目的,EAGER实际上是默认值.该namereferencedColumn在注释元素 JoinColumn也是可选的.以下是JPA规范的简短摘要:

11.1.21 JoinColumn注释

JoinColumn注释用于接合的实体关联或元素集合指定列.

表20列出了可以为JoinColumn注释指定的注释元素 及其默认值.

如果JoinColumn注释本身是默认的,则假定使用单个连接列,并应用表20中描述的默认值.

name注释元素定义了外键列的名称.其余的注释元素(除了referencedColumnName)引用此列并具有与Column 注释相同的语义.

如果 referencedColumnName元素丢失,则假定外键引用引用表的主键.

有关完整和详尽的详细信息,请参阅规范中的表20.