gpt4 book ai didi

java hibernate ' '中的未知列 'field list'

转载 作者:太空狗 更新时间:2023-10-29 22:47:26 25 4
gpt4 key购买 nike

我需要帮助。

当我使用 getAllStreets() 方法时,我在 HQL 中出现错误:

org.hibernate.exception.SQLGrammarException: Unknown column 'this_1_.houses_id' in 'field list'

我猜他必须写 this_1_id 而不是 this_1_.houses_id

可能是我做错了实体和关系?

2 个实体 - 房屋和街道

ER - 型号:

table 街道

  • 身份证
  • 姓名
  • Houses_id

table 屋

  • 编号
  • 姓名

我的类(class):

街道

@Entity
@Table(name="Streets")
public class Street {
private Long id;
private String name;
private Long houses_id;
private House house;
public Street(){}
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy="increment")
@Column(name="id")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne
@JoinTable(name="Houses", joinColumns = @JoinColumn(name="id"), inverseJoinColumns=@JoinColumn(name="houses_id"))
public House getHouse() {
return house;
}
public void setHouse(House house) {
this.house = house;
}
@Column(name="houses_id")
public Long getHouses_id() {
return houses_id;
}
public void setHouses_id(Long houses_id) {
this.houses_id = houses_id;
}
}

房子

@Entity
@Table(name="Houses")
public class House {

private Long id;
private String name;
public House(){}

@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name="increment", strategy="increment")
@Column(name="id")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

我的 DAOIMP:

StreetDAOImp:

public class StreetDAOImpl implements StreetDAO {
@Override
public void addStreet(Street street) throws SQLException {
// TODO Auto-generated method stub
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();

session.save(street);
session.getTransaction().commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
if(session != null && session.isOpen()){
session.close();
}
}
}
@Override
public Collection getAllStreets() throws SQLException {
// TODO Auto-generated method stub
Session session = null;
List<Street> streets = new ArrayList<Street>();
try {
session = HibernateUtil.getSessionFactory().openSession();

streets = session.createCriteria(Street.class).list();
//Query q = session.createQuery("select str from com.ff.model.Street str join str.houses h where h.id = str.houses_id");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return streets;
}
}

HouseDAOImpl:

public class HouseDAOImpl implements HouseDAO {

@Override
public void addHouse(House house)throws SQLException {
// TODO Auto-generated method stub
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(house);
session.getTransaction().commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
if(session != null && session.isOpen()){
session.close();
}
}
}

@Override
public Collection getAllHouses() throws SQLException {
// TODO Auto-generated method stub
Session session = null;
List<House> houses = new ArrayList<House>();

try {
session = HibernateUtil.getSessionFactory().openSession();
houses = session.createCriteria(House.class).list();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally {
if (session != null && session.isOpen()) {
session.close();
}

}
return houses;
}}

错误:

log4j:WARN No appenders could be found for logger (org.jboss.logging).log4j:WARN Please initialize the log4j system properly.Hibernate: select this_.id as id1_1_, this_.houses_id as houses2_1_1_, this_.name as name1_1_, this_1_.houses_id as houses3_0_1_, house2_.id as id0_0_, house2_.name as name0_0_ from Streets this_ left outer join Houses this_1_ on this_.id=this_1_.id left outer join Houses house2_ on this_1_.houses_id=house2_.idorg.hibernate.exception.SQLGrammarException: Unknown column 'this_1_.houses_id' in 'field list'    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)    at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)    at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)    at $Proxy14.executeQuery(Unknown Source)    at org.hibernate.loader.Loader.getResultSet(Loader.java:2031)    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1832)    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811)    at org.hibernate.loader.Loader.doQuery(Loader.java:899)    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)    at org.hibernate.loader.Loader.doList(Loader.java:2516)    at org.hibernate.loader.Loader.doList(Loader.java:2502)    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2332)    at org.hibernate.loader.Loader.list(Loader.java:2327)    at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:124)    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1621)    at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374)    at com.ff.DAO.StreetDAOImpl.getAllStreets(StreetDAOImpl.java:48)    at FFMain.main(FFMain.java:58)Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'this_1_.houses_id' in 'field list'    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)    at com.mysql.jdbc.Util.getInstance(Util.java:381)    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1885)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)    ... 16 more

最佳答案

请确保您调用的表具有正确的列。我遇到了问题,我发现映射的域列在数据库中不匹配。

关于java hibernate ' '中的未知列 'field list',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15066227/

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