Java 休眠一对多映射,通过获取;无效的标识符
大家好!我有一个类anmedJava 休眠一对多映射,通过获取;无效的标识符,java,oracle,hibernate,composite-key,Java,Oracle,Hibernate,Composite Key,大家好!我有一个类anmedteachingglocation,它包含teachingacturers。我正在尝试级联教学执行器,遇到ORA-00904(无效标识符) 教学语言课: 教学结构ID: 我得到一个错误: no.solarsoft.venus2.exception.DataAccessException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet at no.solarsof
teachingglocation
,它包含teachingacturers
。我正在尝试级联教学执行器,遇到ORA-00904(无效标识符)
教学语言课:
教学结构ID:
我得到一个错误:
no.solarsoft.venus2.exception.DataAccessException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at no.solarsoft.venus2.datamanager.DTOFetcher2.fetchDTO(DTOFetcher2.java:74)
at no.solarsoft.venus2.datamanager.DataManager.getTeachingById(DataManager.java:10035)
at no.solarsoft.test.TeachingDAOTester.createTestTEaching(TeachingDAOTester.java:47)
at no.solarsoft.test.TeachingDAOTester.testSaveTeaching(TeachingDAOTester.java:39)
at no.solarsoft.test.TeachingDAOTester.main(TeachingDAOTester.java:24)
Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
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.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)
at org.hibernate.loader.Loader.getResultSet(Loader.java:2040)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1837)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
at org.hibernate.loader.Loader.doQuery(Loader.java:900)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:312)
at org.hibernate.loader.Loader.loadCollection(Loader.java:2238)
at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:65)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:674)
at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:85)
at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1855)
at org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:549)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:234)
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545)
at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:124)
at org.hibernate.collection.internal.AbstractPersistentCollection$1.doWork(AbstractPersistentCollection.java:153)
at org.hibernate.collection.internal.AbstractPersistentCollection$1.doWork(AbstractPersistentCollection.java:138)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:234)
at org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:137)
at org.hibernate.collection.internal.PersistentBag.isEmpty(PersistentBag.java:249)
at no.solarsoft.venus2.DTO.TeachingLocationDTO.<init>(TeachingLocationDTO.java:37)
at no.solarsoft.venus2.DTO.TeachingDTO.<init>(TeachingDTO.java:62)
at no.solarsoft.venus2.DAO.TeachingDAO.getTeachingDTOById(TeachingDAO.java:79)
at no.solarsoft.venus2.datamanager.DataManager$35.operationsToDo(DataManager.java:10033)
at no.solarsoft.venus2.datamanager.DataManager$35.operationsToDo(DataManager.java:1)
at no.solarsoft.venus2.datamanager.DTOFetcher2.fetchDTO(DTOFetcher2.java:66)
... 4 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00904: "TEACHINGLE0_"."TEACHINGID": invalid identifier
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:861)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1145)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1267)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3493)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:116)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
... 30 more
no.solarsoft.venus2.exception.DataAccessException:org.hibernate.exception.sqlgrammareexception:无法提取结果集
位于no.solarsoft.venus2.datamanager.DTOFetcher2.fetchDTO(DTOFetcher2.java:74)
位于no.solarsoft.venus2.datamanager.datamanager.getTeachingById(datamanager.java:10035)
位于no.solarsoft.test.TeachingDAOTester.createTestTEaching(TeachingDAOTester.java:47)
位于no.solarsoft.test.TeachingDAOTester.testSaveTeaching(TeachingDAOTester.java:39)
位于no.solarsoft.test.TeachingDAOTester.main(TeachingDAOTester.java:24)
原因:org.hibernate.exception.sqlgrammareexception:无法提取结果集
位于org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
位于org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
位于org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
位于org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
位于org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)
位于org.hibernate.loader.loader.getResultSet(loader.java:2040)
位于org.hibernate.loader.loader.executeQueryStatement(loader.java:1837)
位于org.hibernate.loader.loader.executeQueryStatement(loader.java:1816)
位于org.hibernate.loader.loader.doQuery(loader.java:900)
在org.hibernate.loader.loader.doQueryAndInitializeNonLazyCollections(loader.java:342)上
在org.hibernate.loader.loader.doQueryAndInitializeNonLazyCollections(loader.java:312)上
位于org.hibernate.loader.loader.loadCollection(loader.java:2238)
位于org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:65)
位于org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:674)
位于org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:85)
位于org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1855)
位于org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:549)
位于org.hibernate.collection.internal.AbstractPersistentCollection.WithTemporarySessionIneed(AbstractPersistentCollection.java:234)
位于org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545)
位于org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:124)
位于org.hibernate.collection.internal.AbstractPersistentCollection$1.doWork(AbstractPersistentCollection.java:153)
位于org.hibernate.collection.internal.AbstractPersistentCollection$1.doWork(AbstractPersistentCollection.java:138)
位于org.hibernate.collection.internal.AbstractPersistentCollection.WithTemporarySessionIneed(AbstractPersistentCollection.java:234)
位于org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:137)
位于org.hibernate.collection.internal.PersistentBag.isEmpty(PersistentBag.java:249)
位于no.solarsoft.venus2.DTO.teachinglocationto.(teachinglocationto.java:37)
位于no.solarsoft.venus2.DTO.TeachingDTO.(TeachingDTO.java:62)
位于no.solarsoft.venus2.DAO.TeachingDAO.getteachingtobyid(TeachingDAO.java:79)
位于no.solarsoft.venus2.datamanager.datamanager$35.operationsToDo(datamanager.java:10033)
位于no.solarsoft.venus2.datamanager.datamanager$35.operationsToDo(datamanager.java:1)
位于no.solarsoft.venus2.datamanager.DTOFetcher2.fetchDTO(DTOFetcher2.java:66)
... 4更多
原因:java.sql.SQLSyntaxErrorException:ORA-00904:“TEACHINGLE0_389;”。“TEACHINGID”:无效标识符
位于oracle.jdbc.driver.t4cttiore.processError(t4cttiore.java:439)
位于oracle.jdbc.driver.t4cttiore.processError(t4cttiore.java:395)
位于oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
位于oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
位于oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
位于oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
位于oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
位于oracle.jdbc.driver.T4CPreparedStatement.executeforderdescripe(T4CPreparedStatement.java:861)
在oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1145)
在oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1267)
位于oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
位于oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3493)
位于oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
在com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:116)
位于org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
... 30多
我忘了在注释里放什么?我试着使用JoinColumns,但仍然不起作用
谢谢 什么是
教学?
?我不知道。它在代码和数据库中都没有TEACHINGLE0\uu:/DB中有类似名称的表吗?没有,我只有TEACHING\u讲师、TEACHING\u位置、TEACHING\u定义和TEACHING
public class TeachingLecturer {
public static final String PROPERTY_TEACHING_ID = "id.teachingId";
public static final String PROPERTY_LOCATION_ID = "id.locationId";
public static final String PROPERTY_LECTURER_ID = "lecturerId";
public static final String PROPERTY_LECTURER = "lecturer";
public static final String PROPERTY_TEACHING = "teaching";
public static final String PROPERTY_TEACHING_LOCATION = "teachingLocation";
public static final String COLUMN_TEACHING_ID = "TEACHING_ID";
public static final String COLUMN_LOCATION_ID = "LOCATION_ID";
public static final String COLUMN_LECTURER_ID = "LECTURER_ID";
// Attributes
private TeachingLecturerId id;
// Relations
private TeachingLocation teachingLocation;
private Lecturer lecturer;
/**
*
*/
public TeachingLecturer() {
}
/**
*
* @param tlId
*/
public TeachingLecturer(TeachingLecturerId tlId) {
this.id = tlId;
}
/**
* @return the id
*/
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = PROPERTY_TEACHING_ID, column = @Column(name = COLUMN_TEACHING_ID, nullable = false)),
@AttributeOverride(name = PROPERTY_LOCATION_ID, column = @Column(name = COLUMN_LOCATION_ID, nullable = false)),
@AttributeOverride(name = PROPERTY_LECTURER_ID, column = @Column(name = COLUMN_LECTURER_ID, nullable = false))
})
public TeachingLecturerId getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(TeachingLecturerId id) {
this.id = id;
}
/**
* @return the teachingLocation
*/
@ManyToOne
@JoinColumns({
@JoinColumn(name = COLUMN_TEACHING_ID, referencedColumnName = TeachingLocation.COLUMN_TEACHING_ID, updatable = false, insertable = false),
@JoinColumn(name = COLUMN_LOCATION_ID, referencedColumnName = TeachingLocation.COLUMN_LOCATION_ID, updatable = false, insertable = false)
})
@MapsId("id")
public TeachingLocation getTeachingLocation() {
return teachingLocation;
}
/**
* @param teachingLocation the teachingLocation to set
*/
public void setTeachingLocation(TeachingLocation teachingLocation) {
this.teachingLocation = teachingLocation;
}
/**
* @return the lecturer
*/
@ManyToOne(targetEntity = Lecturer.class)
@JoinColumn(name = COLUMN_LECTURER_ID, referencedColumnName = Lecturer.COLUMN_PERSON_ROLE_ID, updatable = false, insertable = false)
@MapsId("lecturerId")
public Lecturer getLecturer() {
return lecturer;
}
/**
* @param lecturer the lecturer to set
*/
public void setLecturer(Lecturer lecturer) {
this.lecturer = lecturer;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "TeachingLecturer [id=" + id + ", teachingLocation=" + teachingLocation + ", lecturer=" + lecturer + "]";
}
}
public class TeachingLecturerId implements Serializable {
private String teachingId;
private String locationId;
private String lecturerId;
/**
*
*/
public TeachingLecturerId() {
}
/**
*
* @param teachingId
* @param locationId
* @param lecturerId
*/
public TeachingLecturerId(String teachingId, String locationId, String lecturerId) {
this.teachingId = teachingId;
this.locationId = locationId;
this.lecturerId = lecturerId;
}
/**
* @return the teachingId
*/
public String getTeachingId() {
return teachingId;
}
/**
* @param teachingId
* the teachingId to set
*/
public void setTeachingId(String teachingId) {
this.teachingId = teachingId;
}
/**
* @return the locationId
*/
public String getLocationId() {
return locationId;
}
/**
* @param locationId
* the locationId to set
*/
public void setLocationId(String locationId) {
this.locationId = locationId;
}
/**
* @return the lecturerId
*/
public String getLecturerId() {
return lecturerId;
}
/**
* @param lecturerId
* the lecturerId to set
*/
public void setLecturerId(String lecturerId) {
this.lecturerId = lecturerId;
}
/*
* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "TeachingLecturerId [teachingId=" + teachingId + ", locationId=" + locationId + ", lecturerId="
+ lecturerId + "]";
}
/*
* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((lecturerId == null) ? 0 : lecturerId.hashCode());
result = prime * result + ((locationId == null) ? 0 : locationId.hashCode());
result = prime * result + ((teachingId == null) ? 0 : teachingId.hashCode());
return result;
}
/*
* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
TeachingLecturerId other = (TeachingLecturerId) obj;
if (lecturerId == null) {
if (other.lecturerId != null)
return false;
} else if (!lecturerId.equals(other.lecturerId))
return false;
if (locationId == null) {
if (other.locationId != null)
return false;
} else if (!locationId.equals(other.locationId))
return false;
if (teachingId == null) {
if (other.teachingId != null)
return false;
} else if (!teachingId.equals(other.teachingId))
return false;
return true;
}
}
no.solarsoft.venus2.exception.DataAccessException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at no.solarsoft.venus2.datamanager.DTOFetcher2.fetchDTO(DTOFetcher2.java:74)
at no.solarsoft.venus2.datamanager.DataManager.getTeachingById(DataManager.java:10035)
at no.solarsoft.test.TeachingDAOTester.createTestTEaching(TeachingDAOTester.java:47)
at no.solarsoft.test.TeachingDAOTester.testSaveTeaching(TeachingDAOTester.java:39)
at no.solarsoft.test.TeachingDAOTester.main(TeachingDAOTester.java:24)
Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
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.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)
at org.hibernate.loader.Loader.getResultSet(Loader.java:2040)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1837)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
at org.hibernate.loader.Loader.doQuery(Loader.java:900)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:312)
at org.hibernate.loader.Loader.loadCollection(Loader.java:2238)
at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:65)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:674)
at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:85)
at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1855)
at org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:549)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:234)
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545)
at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:124)
at org.hibernate.collection.internal.AbstractPersistentCollection$1.doWork(AbstractPersistentCollection.java:153)
at org.hibernate.collection.internal.AbstractPersistentCollection$1.doWork(AbstractPersistentCollection.java:138)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:234)
at org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:137)
at org.hibernate.collection.internal.PersistentBag.isEmpty(PersistentBag.java:249)
at no.solarsoft.venus2.DTO.TeachingLocationDTO.<init>(TeachingLocationDTO.java:37)
at no.solarsoft.venus2.DTO.TeachingDTO.<init>(TeachingDTO.java:62)
at no.solarsoft.venus2.DAO.TeachingDAO.getTeachingDTOById(TeachingDAO.java:79)
at no.solarsoft.venus2.datamanager.DataManager$35.operationsToDo(DataManager.java:10033)
at no.solarsoft.venus2.datamanager.DataManager$35.operationsToDo(DataManager.java:1)
at no.solarsoft.venus2.datamanager.DTOFetcher2.fetchDTO(DTOFetcher2.java:66)
... 4 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00904: "TEACHINGLE0_"."TEACHINGID": invalid identifier
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:861)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1145)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1267)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3493)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:116)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
... 30 more