我正在尝试使用hibernate通过存储过程从MYSQL数据库中获取用户详细信息:
在MYSQL db中的org.hibernate.exception.SQLGrammarException:无法执行查询 引起:java.sql.SQLException:找不到列'create_time'。
我已经为create_time采用了时间戳数据类型 为什么呢?
我的存储过程
DELIMITER $$;
DROP PROCEDURE IF EXISTS `BIM`.`getUserDetailsSP`$$
CREATE DEFINER=`mariadb`@`%` PROCEDURE `getUserDetailsSP`(IN in_email VARCHAR(255))
BEGIN
SELECT UserID, a.UserTypeID, b.UserTypeName,firstname,lastname,phone
FROM BIM.UserDetailsV a
JOIN BIM.UserTypeDetailsV b ON a.UserTypeID = b.UserTypeID
WHERE a.email = in_email;
END$$
DELIMITER ;$$
休眠
try{
Session session = sessionFactory.openSession();
Query query = session.createSQLQuery(
"CALL getUserDetailsSP(:email)")
.addEntity(UserDTO.class)
.setParameter("email", "bob@gmail.com");
List result = query.list();
for(int i=0; i<result.size(); i++){
UserDTO stock = (UserDTO)result.get(i);
System.out.println(stock.getFirstName());
}
}catch (HibernateException e) {
e.printStackTrace();
}
UserDTO
public class UserDTO implements Serializable{
@Id
@GenericGenerator(name = "j", strategy = "increment")
@GeneratedValue(generator = "j")
@Column(name = "UserID")
private long userID;
@Column(name = "UserTypeID")
private long userTypeID;
@Column(name = "firstname")
private String firstName;
@Column(name = "lastname")
private String lastName;
@Column(name = "email")
private String email;
@Column(name = "phone")
private String phone;
@Column(name = "password")
private String password;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_time")
private Date create_time;
@Column(name = "update_time")
private Date update_time;
// getters and setters
}