Java 在hibernate中使用addEntity获取表的特定列
我熟悉Java,但对ORM和Hibernate非常陌生 我使用以下查询来获取hibernate中表的所有列的结果集Java 在hibernate中使用addEntity获取表的特定列,java,mysql,hibernate,Java,Mysql,Hibernate,我熟悉Java,但对ORM和Hibernate非常陌生 我使用以下查询来获取hibernate中表的所有列的结果集 (List<Neighborhood>)session.createSQLQuery("SELECT * FROM Neighborhood").addEntity(Neighborhood.class).list(); 编辑: 在@scaryWombat的建议之后,又有两个尝试性的查询。两者都给出了相同的例外 首先 第二 String sql = "SELECT n
(List<Neighborhood>)session.createSQLQuery("SELECT * FROM Neighborhood").addEntity(Neighborhood.class).list();
编辑:
在@scaryWombat的建议之后,又有两个尝试性的查询。两者都给出了相同的例外
首先
第二
String sql = "SELECT neighborhoodName,educationYouth FROM Neighborhood";
SQLQuery query = session.createSQLQuery(sql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List results = query.list();
编辑2:
在@Tehmina的解决方案之后,我得到了一个错误-java.sql.SQLException:Column'educationYouth'找不到
,因为educationYouth是类名为“educationYouth”的对象。
在邻居表中,没有名为educationYouth的列,而是educationYouth类中的所有列。试试这个
(List<Neighborhood>)session.createSQLQuery("SELECT * FROM Neighborhood").list();
(List)session.createSQLQuery(“从邻居中选择*).List();
为了避免使用ResultSetMetadata的开销,或者为了更明确地显示返回的内容,可以使用addScalar():
(List)session.createSQLQuery(“从邻居中选择*).addScalar(“邻居名称”,Hibernate.STRING)。addScalar(“educationYouth”,Hibernate.STRING);
或者试试这个
Hibernate会自动将数据转换为适当的类型。自动转换并非在所有情况下都有效,在这种情况下,我们有一个重载版本的addScalar():
SQLQuery q=session.createSQLQuery(“从邻居中选择*);
q、 addScalar(“邻居名称”);
q、 addScalar(“教育青年”);
列表行=q.List();
对于(对象[]行:行){
System.out.println(行[0]+“”+行[1]);
别忘了签入hibernate配置文件
<!--hibernate.cfg.xml -->
<property name="show_sql">true</property>
真的
我希望它能解决您的错误。不要尝试使用
邻里
类作为entitysee不,它不起作用。我得到了相同的异常。请显示您修改的代码。您的列名正确吗?也许邻里
?嗨@Tehmina,谢谢您,我认为您的第二个解决方案会起作用。我实际上得到了一个错误,但这是因为我有不完整的信息。实际上“educationYouth”是一个单独的类。类名是“educationYouth”。您知道在这种情况下需要做什么修改吗?欢迎@denis,只需删除q.addScalar(“邻里名称”)之后的所有内容;并添加以下代码列表名称=q.List();System.out.println(名称);
(List<Neighborhood>)session.createSQLQuery("SELECT * FROM Neighborhood").list();
(List<Neighborhood>)session.createSQLQuery("SELECT * FROM Neighborhood").addScalar("neighborhoodName", Hibernate.STRING).addScalar("educationYouth", Hibernate.STRING);
SQLQuery q = session.createSQLQuery("SELECT * FROM Neighborhood");
q.addScalar("neighborhoodName");
q.addScalar("educationYouth");
List<Object[]> rows = q.list();
for (Object[] row : rows) {
System.out.println(row[0] + " " + row[1] );
<!--hibernate.cfg.xml -->
<property name="show_sql">true</property>