0
최대 절전 모드로 내 데이터베이스 스키마를 작성했다. 테이블을 잘 만들 수 있지만 명명 된 쿼리는 개체가 매핑되지 않았기 때문에 컴파일되지 않습니다.Hibernate는 방금 작성한 테이블의 클래스에 대한 맵핑을 찾을 수 없다.
전체 응용 프로그램은 주석이며 구성에 따라 달라집니다. .xml
파일이 없습니다.
여기에 관련 설정 부분입니다 :
properties = new Properties();
properties.setProperty("hibernate.connection.driver_class", "org.postgresql.Driver");
properties.setProperty("hibernate.connection.url", con);
properties.setProperty("hibernate.connection.username", user);
properties.setProperty("hibernate.connection.password", pass);
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
properties.setProperty("hibernate.current_session_context_class","thread");
properties.setProperty("hibernate.hbm2ddl.auto","create");
Configuration config = new Configuration();
config.setProperties(properties);
config.addAnnotatedClass(Player.class);
SessionFactory factory = config.buildSessionFactory();
내 플레이어 클래스는 지금 꽤 베어 - 그것은 이름과 ID 같은 몇 가지 매개 변수가 있습니다. 그것은 행복하게 이것을 적절한 테이블로 번역합니다.
@Entity
@NamedQueries({
@NamedQuery(name="verifyPlayerByUuid", query="SELECT name FROM player WHERE uuid = :uuid"),
@NamedQuery(name="verifyPlayerByName", query="SELECT name FROM player WHERE name = :name"),
@NamedQuery(name="obtainPlayerByUuid", query="FROM player WHERE uuid = :uuid"),
})
public class Player {
// impl here
}
실행할 때 얻을 수 있습니다. boilerplate 타임 스탬프를 제거하고 패키지 이름을 최대 절전 모드로 설정하여 관련 메시지에 대한 공간을 늘릴 수 있습니다. 나는 또한 데이터를보다 잘 구성하기 위해 메시지를 포맷팅 할 때 자유를 얻었다 - 이것은 공백의 추가 만 포함했다.
[timestamp] [hib].hbm2ddl.SchemaExport - HHH000227: Running hbm2ddl schema export
[timestamp] [hib].hbm2ddl.SchemaExport - HHH000230: Schema export complete
[timestamp] [hib].SessionFactoryImpl - HHH000177: Error in named query: verifyPlayerByUuid
org.hibernate.hql.internal.ast.QuerySyntaxException:
player is not mapped [SELECT name FROM player WHERE uuid = :uuid]
[timestamp] [hib].SessionFactoryImpl - HHH000177: Error in named query: obtainPlayerByUuid
org.hibernate.hql.internal.ast.QuerySyntaxException:
player is not mapped [FROM player WHERE uuid = :uuid]
[timestamp] [hib].SessionFactoryImpl - HHH000177: Error in named query: verifyPlayerByName
org.hibernate.hql.internal.ast.QuerySyntaxException:
player is not mapped [SELECT name FROM player WHERE name = :name]
그래서 HQL은 대소 문자를 구분합니까? – corsiKa
@corsiKa 네, 매우 그렇습니다. 그렇지 않으면 반사가 작동하지 않습니다. –
@corsiKa 와도 관련이 있습니다. http://stackoverflow.com/questions/5327682/hql-with-fully-qualified-class-name –