I have a domain object annotated like this for hibernate support.
@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
}
The property emailId is a foreign key referring to say emailId column in User table. Lets say i add a property like this to AppInput.java
private User userDetails;
How do i annotate this so that, whenever i fetch AppInput from db, the corresponding user details also get populated?
The property emailId is a foreign key referring to say emailId column in User table.
Then don't add the emailId
property, add a User
.
(...) How do i annotate this so that, whenever i fetch AppInput from db, the corresponding user details also get populated?
Not sure since it could be a ManyToOne
or OneToOne
but I'll assume it's a ManyToOne
:
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="USERDETAILS_EMAIL_ID", referencedColumnName="EMAIL_ID")
private User userDetails;
The fetch
annotation element is for demonstration purpose, EAGER
being actually the default value. The name
and referencedColumn
annotation elements in JoinColumn
are also optional. Below a short summary from the JPA specification:
11.1.21 JoinColumn Annotation
The
JoinColumn
annotation is used to specify a column for joining an entity association or element collection.Table 20 lists the annotation elements that may be specified for the
JoinColumn
annotation and their default values.If the
JoinColumn
annotation itself is defaulted, a single join column is assumed and the default values described in Table 20 apply.The
name
annotation element defines the name of the foreign key column. The remaining annotation elements (other thanreferencedColumnName
) refer to this column and have the same semantics as for theColumn
annotation.If the
referencedColumnName
element is missing, the foreign key is assumed to refer to the primary key of the referenced table.
See the Table 20 in the spec for complete and exhaustive details.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With