//实体1 option
public class Option implements java.io.Serializable {
// Fields private Long voId;
private String voOption;
private Long vsId;
private Long voOrder=1l;
private Set<Item> items = new HashSet<Item>();
// Property accessors
public Set<Item> getItems() {
return items;
} public void setItems(Set<Item> items) {
this.items = items;
} public Long getVoId() {
return this.voId;
}
public Long getVsId() {
return vsId;
} public void setVsId(Long vsId) {
this.vsId = vsId;
} public void setVoId(Long voId) {
this.voId = voId;
} public String getVoOption() {
return this.voOption;
}
public void setVoOption(String voOption) {
this.voOption = voOption;
}
public Long getVoOrder() {
return this.voOrder;
}
public void setVoOrder(Long voOrder) {
this.voOrder = voOrder;
}
}
//optio的配置文件
<hibernate-mapping>
<class name="entity.Option" table="VOTE_OPTION" schema="EPET">
<id name="voId" type="java.lang.Long">
<column name="VO_ID" precision="10" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_option</param>
</generator>
</id>
<property name="voOption" type="java.lang.String" column="vo_option"/>
<property name="vsId" column="vs_id" type="java.lang.Long"/>
<property name="voOrder" type="java.lang.Long" column="vo_order"/>
<set name="items" table="vote_item">
<key column="vo_id"></key>
<one-to-many class="entity.Item"/>
</set>
</class>
</hibernate-mapping>//实体2 item
// Fields private Long viId;
private Option option = new Option();
private Long vsId;
private Long vuUserId;
// Property accessors public Long getViId() {
return this.viId;
}
public void setViId(Long viId) {
this.viId = viId;
}
public Option getOption() {
return option;
} public void setOption(Option option) {
this.option = option;
} public Long getVsId() {
return this.vsId;
}
public void setVsId(Long vsId) {
this.vsId = vsId;
} public Long getVuUserId() {
return this.vuUserId;
}
public void setVuUserId(Long vuUserId) {
this.vuUserId = vuUserId;
}
//实体item配置文件
<hibernate-mapping>
<class name="entity.Item" table="VOTE_ITEM" schema="EPET">
<id name="viId" type="java.lang.Long">
<column name="VI_ID" precision="10" scale="0" />
<generator class="sequence"></generator>
</id>
<many-to-one name="option" class="entity.Option" column="vo_id"></many-to-one>
<property name="vsId" type="java.lang.Long" column="vs_id"/>
<property name="vuUserId" type="java.lang.Long" column="vu_user_id"/>
</class>
</hibernate-mapping>
我在执行下面的语句的时候报错了,是为何呢
List<Item> items=HibernateUtil.getSession().createQuery("from Item i left join fetch i.option ").list();报错是这样的
xception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2235)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at demo.Test.main(Test.java:19)
Caused by: java.sql.SQLException: 无法转换为内部表示
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.CharCommonAccessor.getLong(CharCommonAccessor.java:239)
at oracle.jdbc.driver.OracleResultSetImpl.getLong(OracleResultSetImpl.java:558)
at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1575)
at org.hibernate.type.LongType.get(LongType.java:51)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:105)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2114)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332)
at org.hibernate.loader.Loader.getRow(Loader.java:1230)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
... 8 more
我看了配置文件没什么问题啊,怎么会这样呢
public class Option implements java.io.Serializable {
// Fields private Long voId;
private String voOption;
private Long vsId;
private Long voOrder=1l;
private Set<Item> items = new HashSet<Item>();
// Property accessors
public Set<Item> getItems() {
return items;
} public void setItems(Set<Item> items) {
this.items = items;
} public Long getVoId() {
return this.voId;
}
public Long getVsId() {
return vsId;
} public void setVsId(Long vsId) {
this.vsId = vsId;
} public void setVoId(Long voId) {
this.voId = voId;
} public String getVoOption() {
return this.voOption;
}
public void setVoOption(String voOption) {
this.voOption = voOption;
}
public Long getVoOrder() {
return this.voOrder;
}
public void setVoOrder(Long voOrder) {
this.voOrder = voOrder;
}
}
//optio的配置文件
<hibernate-mapping>
<class name="entity.Option" table="VOTE_OPTION" schema="EPET">
<id name="voId" type="java.lang.Long">
<column name="VO_ID" precision="10" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_option</param>
</generator>
</id>
<property name="voOption" type="java.lang.String" column="vo_option"/>
<property name="vsId" column="vs_id" type="java.lang.Long"/>
<property name="voOrder" type="java.lang.Long" column="vo_order"/>
<set name="items" table="vote_item">
<key column="vo_id"></key>
<one-to-many class="entity.Item"/>
</set>
</class>
</hibernate-mapping>//实体2 item
// Fields private Long viId;
private Option option = new Option();
private Long vsId;
private Long vuUserId;
// Property accessors public Long getViId() {
return this.viId;
}
public void setViId(Long viId) {
this.viId = viId;
}
public Option getOption() {
return option;
} public void setOption(Option option) {
this.option = option;
} public Long getVsId() {
return this.vsId;
}
public void setVsId(Long vsId) {
this.vsId = vsId;
} public Long getVuUserId() {
return this.vuUserId;
}
public void setVuUserId(Long vuUserId) {
this.vuUserId = vuUserId;
}
//实体item配置文件
<hibernate-mapping>
<class name="entity.Item" table="VOTE_ITEM" schema="EPET">
<id name="viId" type="java.lang.Long">
<column name="VI_ID" precision="10" scale="0" />
<generator class="sequence"></generator>
</id>
<many-to-one name="option" class="entity.Option" column="vo_id"></many-to-one>
<property name="vsId" type="java.lang.Long" column="vs_id"/>
<property name="vuUserId" type="java.lang.Long" column="vu_user_id"/>
</class>
</hibernate-mapping>
我在执行下面的语句的时候报错了,是为何呢
List<Item> items=HibernateUtil.getSession().createQuery("from Item i left join fetch i.option ").list();报错是这样的
xception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2235)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at demo.Test.main(Test.java:19)
Caused by: java.sql.SQLException: 无法转换为内部表示
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.CharCommonAccessor.getLong(CharCommonAccessor.java:239)
at oracle.jdbc.driver.OracleResultSetImpl.getLong(OracleResultSetImpl.java:558)
at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1575)
at org.hibernate.type.LongType.get(LongType.java:51)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:105)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2114)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332)
at org.hibernate.loader.Loader.getRow(Loader.java:1230)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
... 8 more
我看了配置文件没什么问题啊,怎么会这样呢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货