我正在學習Hibernate和Play框架(同時也將Java添加到帳戶中...)。我在保存這種實體休眠中的關係問題
@Entity
@Table(name="users")
public class User extends Model {
@Required
public String username;
@Column(name="user_displayname",nullable=true)
public String displayname;
@Password
public String user_password;
@Email
@Column(name="user_email",nullable=false,unique=true)
public String user_email;
public String user_salt;
public Date user_joindate;
@ManyToOne
@JoinTable(name="users_meta")
public UserMeta userdata;
@Required
public boolean user_isActive;
@OneToOne(targetEntity=UserPhotos.class,cascade=CascadeType.ALL)
@JoinColumn(name="id",referencedColumnName="userID")
public UserPhotos userPhoto;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="links_rol2user")
public List<Rol> rol;
public User (String username, models.Pass password, String user_email) {
this.username = username;
this.user_password = password.getHashedPassword();
this.user_salt = password.getUserHash();
this.user_email = user_email;
this.user_joindate = new Date();
this.user_isActive = false;
}
。這是當我註冊用戶
// check if the validation has errors
if(validation.hasErrors()) {
params.flash(); // add http parameters to the flash scope
validation.keep(); // keep the errors for the next request
register();
} else {
Cache.delete(uuid);
Pass pass = new Pass(password,new Date().toString());
User newUser = new User(firstName, pass, email);
UserMeta utest = new UserMeta(newUser.id);
utest.setUserTownID(pueblos);
newUser.setUserMeta(utest);
newUser.save();
Logger.info("NewUser ID : %s", newUser.getId());
// UserMeta userInfo = new UserMeta(newUser.getId());
// userInfo.setUserTownID(pueblos);
// userInfo.save();
// TODO salvar foto a null
// Confirmation left
Cache.set("thankyou", "alright!", "3mn");
thankyou();
}
我試圖挽救userMeta我的代碼的問題,它會創建一個新的記錄當我將userMeta對象設置爲newUser(現在不可見)時,但它不插入在newUser中創建的新ID。
我需要什麼樣的關係?在我現在調整代碼之前,這是一個OneToOne關係,工作得很好,但現在當我完成註冊功能時,它有點打我,我也需要保存userMeta對象..
如果您需要更多信息讓我知道,我不知道如果我解釋它好不好,只是想獲得的休眠怎麼辦關係的竅門等
添加UserMeta:
*/
@Entity
@Table(name="users_meta")
public class UserMeta extends Model {
@Lob
@Column(name="userBio")
public String userBio;
@Column(name="userPhotoID",nullable=true)
public Long userPhotoID = null;
@Column(name="userRoleID", nullable=false)
public Long userRoleID = 2L;
@Lob
public String userDescription;
@Column(name="userViews", nullable=false)
public Long userViews = 0L;
@Column(name="userFavoriteCount", nullable=false)
public Long userFavoriteCount = 0L;
@Column(name="userTotalComments", nullable=false)
public Long userTotalComments = 0L;
@Column(name="userTotalUploadedVideos", nullable=false)
public Long userTotalUploadedVideos = 0L;
public Long userTownID;
public Long userID;
public UserMeta() {}
public UserMeta(Long userid) {
this.userBio = "El usuario no ha escrito nada todavia!";
this.userDescription = "El usuario todavia no se ha describido!";
this.userID = userid;
}
public Long getUserTownID() {
return userTownID;
}
public void setUserTownID(Long userTownID) {
this.userTownID = userTownID;
}
}
//合格模型
public class Pass {
protected String hashed;
protected String userHash;
public Pass(String passwordToHash, String salt) {
StringBuffer passSalt = new StringBuffer(passwordToHash);
this.userHash = DigestUtils.md5Hex(salt);
passSalt.append(this.userHash);
passSalt.append(Play.configuration.getProperty("application.passwordSalt"));
this.hashed = DigestUtils.sha512Hex(passSalt.toString());
}
public String getHashedPassword() {
return this.hashed;
}
public String getUserHash() {
return this.userHash;
}
}
UserMeta和Pass類是怎麼樣的? – 2010-11-07 20:20:35
現在編輯我的帖子,歡呼 – allenskd 2010-11-07 20:34:40