简体   繁体   English

外键关系:单向注释休眠

[英]Foreign key Relation : UniDirectional annotation hibernate

I need to save two entities at once in mysql table . 我需要一次在mysql表中保存两个实体。 The below are two entities one is UserEntity and other one is UserDetailsEntity. 以下是两个实体,一个是UserEntity,另一个是UserDetailsEntity。 I want to insert UserId column in UserDetails table as foreign key. 我想在UserDetails表中插入UserId列作为外键。 but UserId is not getting inserted in UserDetails Table. 但是UserId未插入UserDetails表中。 Help me in this Plz. 在这个Plz中帮助我。

UserEntity.java UserEntity.java

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "UserId")
private int id;

@Column(name = "UserLogin", length = 15, unique = true)
private long phNumber;

@Column(name = "Password", length = 100)
private String password;

@Column(name = "UserType", length = 20)
private String userType;

@Column(name = "PromoCode", length = 20)
private String promoCode;

@Column(name = "FirstName", length = 30)
private String firstName;

@Column(name = "LastName", length = 30)
private String lastName;

@Column(name = "RoleId")
private int roleId;

@Column(name = "isActive")
private int isActive;

@Column(name = "isTestUser")
private int isTestUser;

@Column(name = "FcmToken", length = 100)
private String fcmToken;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "UserId", unique = true,insertable = true, updatable = true) 
//@ForeignKey(name = "UserId")
private UserDetailsEntity userDetailsEntity;

// getters and setters //获取器和设置器

UserDetailsEntity.java UserDetailsEntity.java

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "UserDetailsId")
private int id;


@Column(name="UserId", unique=true, nullable=false)
@GeneratedValue(generator="gen")
@GenericGenerator(name="gen", strategy="foreign", parameters={@Parameter(name="property", value="uid")})    
private int userId;

@Column(name ="AadhaarCardNumber" ,length = 12)
private long aadhaarNumber;

@Column(name="", length = 50)
private String emailId; 

@Column(name="Address1" , length = 30)
private String address1;

@Column(name="Address2", length = 30)
private String address2;

@Column(name="CityId", length = 10)
private int cityId;

@Column(name="StateId", length = 10)
private int stateId;

@Column(name="CountryId", length = 10)
private int countryId;

@Column(name="Latitude", length = 60)
private String lat;

@Column(name="Longitude", length = 60)
private String lng;

@Column(name="MobileNumber1", length = 15)
private long mobileNumber1;

@Column(name="MobileNumber2", length = 15)
private long mobileNumber2;

@Column(name="DOB", length = 15)
private Date dob;

@OneToOne   
private UserEntity userEntity;

// getter and setters here //这里的getter和setters

I found the solution myself . 我自己找到了解决方案。 let me update . 让我更新。 just mention annotation OneToOne in parents table(here is Users). 只需在父母表(这里是用户)中提及注释OneToOne。 and child table that is UserDetails's Id would be stored in parent table. 而作为UserDetails ID的子表将存储在父表中。 @OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY) @JoinColumn(name = "UserDetailsId", nullable = false) private UserDetailsEntity userDetailsEntity;
and my requirement get completed and nothing to do with UserDetailsEntity. 我的要求已经完成,并且与UserDetailsEntity无关。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM