Reputation: 55
@Entity
@Table(name="Customer")
public class Customer implements Serializable{
/**
* This is my Customer entity object
*/
private static final long serialVersionUID = 9037154862690840147L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="Cust_Id")
private int customerId;
@Column(name="First_Name")
private String firstName;
@Column(name="Last_Name")
private String lastName;
@Column(name="Gender")
private String gender;
@Column(name="Email")
private String email;
@Column(name="Password")
private String password;
@Column(name="City")
private String city;
@Column(name="State")
private String state;
@Column(name="Country")
private String country;
@Column(name="Phone_No")
private String phoneNumber;
@Column (name="Zip_Code")
private int zipCode;
@Column(name="LAST_UPDATED_NM")
private String lastUpdatedName;
@Column(name="LAST_UPDATED_DTM")
private Date lastUpdatedTime;
@OneToOne(mappedBy = "customer", cascade = CascadeType.ALL)
private RoleOfUser roleOfUser;
This is my Role of user entity object
@Entity
@Table(name = "role_of_user")
public class RoleOfUser implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Role_Id")
private Integer roleId;
@Column(name = "Role_Name")
private String roleName;
@Column(name = "First_Name")
private String firstName;
@Column(name="Last_Name")
private String lastName;
@Column(name = "Created_NM")
private String createdName;
@Column(name = "Created_DTM")
private Date createdDate;
@Column(name = "Last_Update_NM")
private String lastUpdatedName;
@Column(name = "Last_Update_DTM")
private Date lastUpdatedDate;
@Column (name = "Status")
private String status;
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private Customer customer;
@Column(name = "Customer_Cust_Id")
@GeneratedValue(generator="gen")
@GenericGenerator(name="gen", strategy="foreign", parameters = @Parameter(name = "property", value = "customer"))
private Integer customerId;
customerId from customer entity table need to be a foreign key to Customer_cust_id in RoleOfUser table. i ran the above code and it says Customer_cust_id cannot be null. How do i map foreign keys? Role_id is already a primary key.
Upvotes: 0
Views: 324
Reputation: 3878
Using primitives in my persistence classes has always been a pet peeve of mine because it can lead to some misleading errors, so I'd start with changing int customerId
to Integer customerId
.
Next, it sounds like Customer
should be your parent table and RoleOfUser
should be the child. The problem here is that you are saying your tables are one-to-one, but you don't then join on the @Id
column of RoleOfUser
.
Consider doing something like this instead:
@Table(name = "CUSTOMER")
public class Customer {
@Id
@Column(name = "CUST_ID")
private Integer customerId;
}
@Entity
@Table(name = "ROLE_OF_USER")
public class RoleOfUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ROLE_ID")
private Integer roleId;
@OneToOne
@JoinColumn(name = "CUSTOMER_CUST_ID", referencedColumnName = "CUST_ID")
private Customer customer
}
Finally, though, if these tables are truly one-to-one, why not just make them one wider table with more columns? Or if a user is allowed to have multiple roles, then you'll want to change that @OneToOne
to be an @ManyToOne
.
Upvotes: 1