如何使用Hibernate

我想从表中得到一个单一的价值,但在那里如何使用Hibernate

有错误报道让我考虑一个简单的SQL语法来获得从表中的用户ID。


选择从tbl_name其中电子邮件= '[email protected]' 身份证;

现在我想返回使用用户ID的方法冬眠

这里是我迄今为止

public int getIdByEmail(String email) { 

session = sessionFact.openSession();

Query query = session.createQuery("SELECT u.user_id FROM tbl_user u WHERE u.email=:emailParam");

query.setParameter("emailParam", email);

return (int) query.uniqueResult();

}

试图User.java

@Entity 

@Table(name = "tbl_user", catalog = "lifestyle", schema = "")

@NamedQueries({

@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")

, @NamedQuery(name = "User.findByUserId", query = "SELECT u FROM User u WHERE u.userId = :userId")

, @NamedQuery(name = "User.findByFullName", query = "SELECT u FROM User u WHERE u.fullName = :fullName")

, @NamedQuery(name = "User.findByAddress", query = "SELECT u FROM User u WHERE u.address = :address")

, @NamedQuery(name = "User.findByContact", query = "SELECT u FROM User u WHERE u.contact = :contact")

, @NamedQuery(name = "User.findByGender", query = "SELECT u FROM User u WHERE u.gender = :gender")

, @NamedQuery(name = "User.findByDob", query = "SELECT u FROM User u WHERE u.dob = :dob")

, @NamedQuery(name = "User.findByEmail", query = "SELECT u FROM User u WHERE u.email = :email")

, @NamedQuery(name = "User.findByPassword", query = "SELECT u FROM User u WHERE u.password = :password")

, @NamedQuery(name = "User.findByActive", query = "SELECT u FROM User u WHERE u.active = :active")

, @NamedQuery(name = "User.findByCreatedDate", query = "SELECT u FROM User u WHERE u.createdDate = :createdDate")})

public class User implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name = "user_id")

private Integer userId;

@NotNull

@Size(min = 1, max = 256)

@Column(name = "full_name")

private String fullName;

@Size(max = 256)

@Column(name = "address")

private String address;

@Size(max = 30)

@Column(name = "contact")

private String contact;

@Size(max = 10)

@Column(name = "gender")

private String gender;

@Column(name = "dob")

@Temporal(TemporalType.DATE)

private Date dob;

// @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation

@NotNull

@Size(min = 1, max = 256)

@Column(name = "email")

private String email;

@NotNull

@Size(min = 1, max = 256)

@Column(name = "password")

private String password;

@NotNull

@Column(name = "active", insertable = false)

private short active;

@Column(name = "created_date", insertable = false)

@Temporal(TemporalType.TIMESTAMP)

private Date createdDate;

错误是

回答:

我们需要在查询中使用实体名称和属性,而不是表名和列名。因此,以下查询:

查询的查询= session.createQuery( “选择u.user_id FROM tbl_userù WHERE u.email =:emailParam”);

应该是

查询的查询= session.createQuery( “选择u.userId FROM用户U WHERE u.email =:emailParam”);

以上是 如何使用Hibernate 的全部内容, 来源链接: utcz.com/qa/266260.html

回到顶部