我有一个servlet,它通过hibernate连接到MySQL数据库。
我得到以下例外情况:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'berelhetoe0_.pk.terem' in 'field list'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
... 33 more
这就是我的数据库构建方式:
DROP TABLE IF EXISTS berelheto
;
CREATE TABLE berelheto
(
TeremID
int(11) NOT NULL,
EszkozID
int(11) NOT NULL,
Available
int(11) DEFAULT NULL,
PRIMARY KEY (TeremID
,EszkozID
)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `eszkozok`;
CREATE TABLE `eszkozok` (
`EszkozID` int(11) NOT NULL AUTO_INCREMENT,
`EszkozNev` varchar(1000) NOT NULL,
UNIQUE KEY `EszkozID` (`EszkozID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `termek`;
CREATE TABLE `termek` (
`TeremID` int(11) NOT NULL AUTO_INCREMENT,
`TeremNev` varchar(1000) DEFAULT NULL,
`Path` varchar(1000) DEFAULT NULL,
`HetkozFrom` time DEFAULT NULL,
`HetkozTo` time DEFAULT NULL,
`SzombatFrom` time DEFAULT NULL,
`SzombatTo` time DEFAULT NULL,
`VasarnapFrom` time DEFAULT NULL,
`VasarnapTo` time DEFAULT NULL,
UNIQUE KEY `TeremID` (`TeremID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
berelheto
我的xml文件:
Terem.hbm.xml:
berelheto
TeremID
Eszkoz.hbm.xml:
EszkozID
Available
Berelheto.hbm.xml:
TeremID
EszkozID
最后是我的java课程:
Terem.java:
DROP TABLE IF EXISTS `eszkozok`;
CREATE TABLE `eszkozok` (
`EszkozID` int(11) NOT NULL AUTO_INCREMENT,
`EszkozNev` varchar(1000) NOT NULL,
UNIQUE KEY `EszkozID` (`EszkozID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `termek`;
CREATE TABLE `termek` (
`TeremID` int(11) NOT NULL AUTO_INCREMENT,
`TeremNev` varchar(1000) DEFAULT NULL,
`Path` varchar(1000) DEFAULT NULL,
`HetkozFrom` time DEFAULT NULL,
`HetkozTo` time DEFAULT NULL,
`SzombatFrom` time DEFAULT NULL,
`SzombatTo` time DEFAULT NULL,
`VasarnapFrom` time DEFAULT NULL,
`VasarnapTo` time DEFAULT NULL,
UNIQUE KEY `TeremID` (`TeremID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
Eszkoz.java:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="beans.Terem" table="termek">
<id name="TeremID">
<generator class="native"/>
</id>
<property name="TeremNev" />
<property name="Path" />
<property name="HetkozFrom" />
<property name="HetkozTo" />
<property name="SzombatFrom" />
<property name="SzombatTo" />
<property name="VasarnapFrom" />
<property name="VasarnapTo" />
<set name="Foglalasok" table="foglalt">
<key>
<column name="TeremID" not-null="true" />
</key>
<one-to-many class="beans.Foglalas" />
</set>
<set name="Tipusok" table="milyen">
<key column="TeremID" />
<many-to-many column="TeremTipusID" class="beans.TeremTipus" />
</set>
<set name="BerelhetoEszkozok" table="berelheto" inverse="true" lazy="true" fetch="select">
<key>
<column name="pk.terem" />
</key>
<one-to-many class="beans.Berelheto" />
</set>
</class>
</hibernate-mapping>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="beans.Terem" table="termek">
<id name="TeremID">
<generator class="native"/>
</id>
<property name="TeremNev" />
<property name="Path" />
<property name="HetkozFrom" />
<property name="HetkozTo" />
<property name="SzombatFrom" />
<property name="SzombatTo" />
<property name="VasarnapFrom" />
<property name="VasarnapTo" />
<set name="Foglalasok" table="foglalt">
<key>
<column name="TeremID" not-null="true" />
</key>
<one-to-many class="beans.Foglalas" />
</set>
<set name="Tipusok" table="milyen">
<key column="TeremID" />
<many-to-many column="TeremTipusID" class="beans.TeremTipus" />
</set>
<set name="BerelhetoEszkozok" table="berelheto" inverse="true" lazy="true" fetch="select">
<key>
<column name="pk.terem" />
</key>
<one-to-many class="beans.Berelheto" />
</set>
</class>
</hibernate-mapping>
Berelheto.java:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="beans.Eszkoz" table="eszkozok">
<id name="EszkozID">
<generator class="native"/>
</id>
<property name="EszkozNev" />
<set name="Termeim" table="berelheto" >
<key>
<column name="pk.eszkoz" not-null="true" />
</key>
<one-to-many class="beans.Berelheto"/>
</set>
</class>
</hibernate-mapping>
BerelhetoID.java:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="beans.Eszkoz" table="eszkozok">
<id name="EszkozID">
<generator class="native"/>
</id>
<property name="EszkozNev" />
<set name="Termeim" table="berelheto" >
<key>
<column name="pk.eszkoz" not-null="true" />
</key>
<one-to-many class="beans.Berelheto"/>
</set>
</class>
</hibernate-mapping>
任何观察,更正都非常受欢迎!
答案 0 :(得分:0)
我在休眠方面不是那么有经验。 但是当它找不到列时,我在Berelheto.java中寻找错误 尝试类似的事情:
@Table(name = "berelheto", catalog="sport")
@AssociationOverrides({
@AssociationOverride(name = "TeremID", joinColumns = @JoinColumn(name = "TeremID")),
@AssociationOverride(name = "pk.eszkoz", joinColumns = @JoinColumn(name = "EszkozID")) })