如何从hibernate中获取特定的列存储过程

时间:2017-09-27 11:35:20

标签: mysql hibernate stored-procedures

我正在尝试使用hibernate通过存储过程从MYSQL数据库中获取用户详细信息:

  

org.hibernate.exception.SQLGrammarException:无法执行查询   引起:java.sql.SQLException:找不到列'create_time'。

在MYSQL db中的

我已经为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
}

0 个答案:

没有答案