我@OneToOne
在以下表格之间存在双向关系:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table
public class StudentAccount implements DomainModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer idstudentaccount;
@OneToOne(optional = false)
@JoinColumn(name = "idstudent")
private Student student;
private String username;
private String password;
//getters and setters
}
@Entity
@Table(name = "student")
public class Student implements DomainModel {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer idStudent;
private String firstname;
private String lastname;
@OneToOne(mappedBy = "student", cascade = CascadeType.ALL, targetEntity=StudentAccount.class)
private StudentAccount studentAccount;
//getters and setters
Run Code Online (Sandbox Code Playgroud)
如何编写查询以获取用户名是否存在于数据库中?这是我尝试过的:
@Transactional
@Override
public boolean usernameAvailability(String username, Integer studentId) {
Query checkUsername = getEntityManager()
.createQuery(
"SELECT COUNT(*) FROM StudentAccount s WHERE s.username=:usernameParam AND s.idstudent<>:accIdParam");
checkUsername.setParameter("usernameParam", username);
checkUsername.setParameter("accIdParam", studentId);
long count = (long) checkUsername.getSingleResult();
if (count > 0) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: idstudent of: com.af.domain.StudentAccount
Run Code Online (Sandbox Code Playgroud)
那应该是 s.student.idstudent<>:accIdParam
请记住,s
是指StudentAccount
具有嵌套student
特性,具有进一步嵌套idStudent
属性
归档时间: |
|
查看次数: |
3916 次 |
最近记录: |