我正在使用hibernate for ORM,我有实体User,Person和地址与OnetoOne关系我使用Eager fetchType . 地址与人和人有关 . 当我从jsp输出时,我只从User获取值,而其他值为null .
用户
@Entity
@Table(name = "User1")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "Id", unique = true, nullable = false)
private int id;
@Column(name = "Username",length = 50)
private String username;
@Column(name = "Email",length = 50)
private String email;
@Column(name = "ContactNO" ,length = 50)
private String contact_no;
@Column(name = "Password", length = 50)
private String password;
@Transient
private boolean canEdit;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Person person;
人
@Entity
@Table(name = "Person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "Id", unique = true, nullable = false)
private int person_id;
@Column(name = "Name", length = 50)
private String name;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Address address;
@Transient
private boolean canEdit;
地址
@Entity
@Table(name="Address")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "Id", unique = true, nullable = false)
private int add_id;
@Column(name ="Street" ,length = 50)
private String street;
@Column(name = "City" ,length = 50)
private String city;
@Column(name = "PostalCode" ,length = 50)
private String postalCode;
@Column(name = "Country" ,length = 50)
private String country;
@Transient
private boolean canEdit;
1 回答
要映射表之间的关系,您应指明两个表之间应连接的列 . 您可以使用在OneToOne anotation中放置的MappedBy属性来完成此操作 .
你能试试这个:
User Entity
Person Entity
Address Entity
此外,你可以找到更多细节here