您好,我使用GWT,Hibernate& amp; HSQLDB。
现在我可以创建帐户,但是,我需要添加一个功能,在提交到数据库之前检查用户名是否已经在数据库中。
LoginServiceImpl.java
@Override
public void createAccount(Account user) {
try {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
}catch (HibernateException e) {
e.printStackTrace();
}catch (InvocationException e) {
e.printStackTrace();
}
}
Account.java
public class Account implements Serializable {
Long id;
String name;
String password;
public Account() {
}
public Account(Long id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setId(Long id) {
this.id = id;
}
}
答案 0 :(得分:5)
Query query= session.createQuery("from Account where name=?");
Account user=(Account)query.setString(0,user.getName()).uniqueResult();
if(user!=null){
//Do whatever you want to do
}else{
//Insert user
}
答案 1 :(得分:2)
我会在你的Account
课程中添加这样的内容。这样可以确保在保存模型时始终执行检查,而不必手动将检查添加到保存模型的每段代码中。
@PrePersist
public void prepareToInsert() {
List<User> conflicts = find("user=?").fetch();
if (!conflicts.isEmpty()) {
throw new IllegalArgumentException("username `" + name + "` is already taken");
}
}
答案 2 :(得分:0)
编写在set方法中检查已经可用的用户的逻辑,并且当用户已经存在时它应该返回异常。但是我对hibernate很新,可以看看是否有专家有一个简单的解决方案。