java - hibernate的sql查询问题

标签 java mysql sql hibernate

我只是尝试通过用户名和密码从我的用户表加载我的用户。然而,用户的属性没有被初始化。我在映射文件中设置了 fetch="join"(急切加载)。这是我的查询:

SQLQuery q = session.createQuery("SELECT u.* FROM users WHERE username=? AND password=?);
q.setString(0, "valid_username");
q.setString(0, "valid_password");

List users = q.list();

我的用户的各种属性(例如部门、用户级别等)未正确初始化。

我的第二个查询:我只是尝试使用相同的方法从数据库获取票证列表

SQLQuery q = session.createQuery("SELECT t.* FROM tickets WHERE assignee_id=?);
    q.setString(0, "valid_assignee_id");

    List users = q.list();

同样的事情正在发生...我的票证字段(例如其状态、优先级等)未初始化。我再次为必要的映射文件设置了 fetch=join 属性。谁能指出我正确的方向,谢谢!!

编辑:下面是我的数据库结构和 pojo 文件供引用”

   users table
    -----------
    u_id
    username
    password
    salt
    email
    firstName
    lastName
    department_id
    userlevel_id

    tickets table
    -------------
    ticket_id
    title
    description
    department_id 
    status_id
    priority_id
    assignee_id
    creator_id

public class Ticket implements java.io.Serializable {

    private Integer tickId;
    private Department department;
    private Status status;
    private User creatorUser;
    private User assignedUser;
    private Priority priority;
    private String title;
    private String description;
    private Set ticketNotes = new HashSet(0);
    private Set attachments = new HashSet(0);

//Getters and setters
}

public class User  implements java.io.Serializable {


     private Integer UId;
     private Department department;
     private Userlevel userlevel;
     private String username;
     private String password;
     private String salt;
     private String email;
     private String firstName;
     private String lastName;
     private Set createdTickets = new HashSet(0);
     private Set assignedTickets = new HashSet(0);

    public User() {
    }

注意我使用的是 hibernate .hbm.xml 映射结构而不是注释。

最佳答案

我认为,这些都是正确的查询。您必须在查询中像这样定义对象(u,t)。它将获取表中的所有列

SELECT u FROM users u WHERE u.username=? AND u.password=?

SELECT t FROM tickets t WHERE t.assignee_id=?

是的,我同意卡蒂克的观点。参数值应该位于正确的位置

q.setString(0, "valid_username");

q.setString(1, "valid_password");

这也需要。

关于java - hibernate的sql查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211852/

相关文章:

mysql - SQL查找id-s,其中列的值等于特定行上的值

sql - 在 SQL 中编写此查询的正确方法是什么?

java - 重用类实例而不重新创建它们

java - 使用zxing进行二维码编解码

java - 在Java中,类中的枚举类型是静态的吗?

sql - Oracle SQL : Select at least the first n rows, 继续直到列值与上一个不同

sql - 如何使用CAST和SQL中另一个表的信息添加新列?

Java/安卓 : Synchronized vs Queue implementation

php - 如何在 magento 中以编程方式更新自定义选项?

java - 为应用程序创建用户名和密码