gpt4 book ai didi

java - Hibernate List 到特定对象

转载 作者:行者123 更新时间:2023-12-01 13:00:00 25 4
gpt4 key购买 nike

我不知道标题是否清楚,但我会尽力让自己尽可能清楚。这是我的场景,我有一个名为 User 的类:

@Entity(name="User_table")
public class User {
@Id @GeneratedValue
int userId;

String userName;

String userMessage;


// public User(String userName, String userMessage)
// {
// this.userName= userName;
// this.userMessage = userMessage;
// }
// public User(){}

public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserMessage() {
return userMessage;
}
public void setUserMessage(String userMessage) {
this.userMessage = userMessage;
}

}

与该表相关:

  mysql> select * from User_table;
+--------+-------------+
| userId | | userName |
+--------+-------------
| 71 | | Dani |
| 72 | | Dani |
+--------++------------
2 rows in set (0.00 sec)

我想要的是从 User_table 中选择所有对象,其中 userName = Dani。所以,我所做的是:

public List<Object> HotelesNombre(String name) {

int i = 0;
User user = null;
SessionFactory sf = open();
Session ss = sf.openSession();
ss.beginTransaction();
Query query = ss.createQuery("select userId, userName from User_table where userName = :id ");
query.setParameter("id", name);
List<Object> list = query.list();
if (list.size() != 0) {
ss.getTransaction().commit();
ss.close();
return list;
} else {
ss.getTransaction().commit();
ss.close();
return null;
}
}

如您所见,我使用 List 而不是 List,因为我选择的是 User 对象的一部分(而不是整个),而 List 不起作用。

因此,为了测试,在主类中我有:

public class HibernateMain {

/**
* @param args
*/
public static void main(String[] args) {

int status;

int i=0;

Manager manager = new Manager();

status = manager.creaUsuario("Dani", "pollo");

//User user = manager.buscaHotel(71);

List<Object> list = manager.HotelesNombre("Dani");

System.out.println(list.get(0).getUserName());

if (list.size() >0){

for (Object v : list){


System.out.println(v.getUserName());
i++;

}



}


// if (user !=null){
//
// System.out.println(user.getUserName());
// }

}

}

我在以下行中遇到问题:System.out.println(v.getUserName());System.out.println(v.getUserName());我无法使用用户类中的方法,因为 v 不是用户,所以....我怎样才能做我想做的事情?非常感谢。

最佳答案

这样的查询返回的是 List<Object[]> ,即包含对象数组的列表。每个数组都是查询返回的一行。由于查询选择 userIduserName ,每个数组包含两个元素:用户 ID(Integer 实例)和用户名(String 实例)。

请注意,除非您在此表中拥有大量代表大量信息(即 blob)的列,否则您所做的就是过早优化。你最好简单地使用select u from User u where ... ,并返回 List<User> .

关于java - Hibernate List<Object[]> 到特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23580814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com