
Опытный
 
Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008
Репутация: 8 Всего: 11
|
Было у меня небольшое hibernate приложение. Маппинг описывался в виде xml-файлов. Все прекрасно работает. Решил заменить xml на аннтотации, ничего пока не выходит. Прошу помощи. Класс группы. | Код | @Entity @Table(name = "groups") public class Group { @Id @Column(name = "group_id", nullable = false) @GeneratedValue(strategy = GenerationType.AUTO) private Long groupId;
@Column(name = "groupName", nullable = false, length = 255) private String nameGroup;
@Column(name = "curator", nullable = false, length = 255) private String curator;
@Column(name = "speciality", nullable = false, length = 255) private String speciality;
private Set subjects = new HashSet();
@ManyToMany( targetEntity = student.logic.Subject.class, cascade={CascadeType.PERSIST, CascadeType.MERGE} ) @JoinTable( name = "subjectGroup", joinColumns = @JoinColumn(name = "group_id"), inverseJoinColumns = @JoinColumn(name = "subject_id") ) public Set getSubjects() { return subjects; }
|
Класс предмета | Код | @Entity @Table(name = "subjects") public class Subject { @Id @Column(name = "subject_id", nullable = false) @GeneratedValue(strategy = GenerationType.AUTO) private Long subjectId;
@Column(name = "subjectName", nullable = false, length = 255) private String subjectName;
@Column(name = "teacher", nullable = false, length = 255) private String teacher;
private Set groups = new HashSet();
@ManyToMany( targetEntity = student.logic.Group.class, cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "subjects" ) public Set getGroups() { return groups; }
|
Еще есть класс студент, но там все аналогично, кроме связей м/у таблицами. Вот что изменил в HibernateUtil.java | Код | sessionFactory = new AnnotationConfiguration() .addPackage("student.logic") .addAnnotatedClass(student.logic.Group.class) .addAnnotatedClass(student.logic.Student.class) .addAnnotatedClass(student.logic.Subject.class) .configure("hibernate.cfg.xml").buildSessionFactory();
|
При попытке выполнить запрос, который тянет все группы | Код | public List<Group> getAllGroups() { Session session = null; try { session = HibernateUtil.getSessionFactory().openSession(); groups = session.createCriteria(Group.class).list(); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка 'getAll'", JOptionPane.OK_OPTION); } finally { if (session != null && session.isOpen()) { session.close(); } } return groups; }
|
Вылезает мой JOptionPane с надписью "could not execute query". Вот полный стектрейс | Код | 18:32:33,906 INFO Version:15 - Hibernate Annotations 3.2.0.GA 18:32:33,921 INFO Environment:514 - Hibernate 3.2.6 18:32:33,937 INFO Environment:532 - loaded properties from resource hibernate.properties: {hibernate.connection.driver_class=org.hsqldb.jdbcDriver, hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider, hibernate.max_fetch_depth=1, hibernate.dialect=org.hibernate.dialect.HSQLDialect, hibernate.jdbc.use_streams_for_binary=true, hibernate.format_sql=true, hibernate.query.substitutions=yes 'Y', no 'N', hibernate.proxool.pool_alias=pool1, hibernate.connection.username=sa, hibernate.cache.region_prefix=hibernate.test, hibernate.connection.url=jdbc:hsqldb:./build/db/hsqldb/hibernate, hibernate.bytecode.use_reflection_optimizer=false, hibernate.connection.password=****, hibernate.jdbc.batch_versioned_data=true, hibernate.connection.pool_size=1} 18:32:33,937 INFO Environment:563 - using java.io streams to persist binary types 18:32:33,937 INFO Environment:681 - Bytecode provider name : cglib 18:32:33,937 INFO Environment:598 - using JDK 1.4 java.sql.Timestamp handling 18:32:34,015 INFO AnnotationConfiguration:154 - Mapping package student.logic 18:32:34,078 WARN AnnotationBinder:211 - Package not found or wo package-info.java: student.logic 18:32:34,125 INFO Configuration:1432 - configuring from resource: hibernate.cfg.xml 18:32:34,125 INFO Configuration:1409 - Configuration resource: hibernate.cfg.xml 18:32:34,203 INFO Configuration:1547 - Configured SessionFactory: null 18:32:34,218 INFO AnnotationBinder:387 - Binding entity from annotated class: student.logic.Group 18:32:34,265 INFO EntityBinder:340 - Bind entity student.logic.Group on table groups 18:32:34,343 INFO AnnotationBinder:387 - Binding entity from annotated class: student.logic.Student 18:32:34,343 INFO EntityBinder:340 - Bind entity student.logic.Student on table students 18:32:34,343 INFO AnnotationBinder:387 - Binding entity from annotated class: student.logic.Subject 18:32:34,343 INFO EntityBinder:340 - Bind entity student.logic.Subject on table subjects 18:32:34,531 INFO DriverManagerConnectionProvider:41 - Using Hibernate built-in connection pool (not for production use!) 18:32:34,531 INFO DriverManagerConnectionProvider:42 - Hibernate connection pool size: 1 18:32:34,531 INFO DriverManagerConnectionProvider:45 - autocommit mode: false 18:32:34,546 INFO DriverManagerConnectionProvider:80 - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/students 18:32:34,546 INFO DriverManagerConnectionProvider:86 - connection properties: {user=root, password=****} 18:32:34,796 INFO SettingsFactory:89 - RDBMS: MySQL, version: 5.0.45-community-nt 18:32:34,796 INFO SettingsFactory:90 - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.5 ( Revision: ${svn.Revision} ) 18:32:34,828 INFO Dialect:152 - Using dialect: org.hibernate.dialect.MySQL5Dialect 18:32:34,828 INFO TransactionFactoryFactory:31 - Using default transaction strategy (direct JDBC transactions) 18:32:34,828 INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 18:32:34,828 INFO SettingsFactory:143 - Automatic flush during beforeCompletion(): disabled 18:32:34,828 INFO SettingsFactory:147 - Automatic session close at end of transaction: disabled 18:32:34,828 INFO SettingsFactory:154 - JDBC batch size: 15 18:32:34,828 INFO SettingsFactory:157 - JDBC batch updates for versioned data: enabled 18:32:34,828 INFO SettingsFactory:162 - Scrollable result sets: enabled 18:32:34,828 INFO SettingsFactory:170 - JDBC3 getGeneratedKeys(): enabled 18:32:34,828 INFO SettingsFactory:178 - Connection release mode: auto 18:32:34,828 INFO SettingsFactory:202 - Maximum outer join fetch depth: 1 18:32:34,828 INFO SettingsFactory:205 - Default batch fetch size: 1 18:32:34,828 INFO SettingsFactory:209 - Generate SQL with comments: disabled 18:32:34,828 INFO SettingsFactory:213 - Order SQL updates by primary key: disabled 18:32:34,828 INFO SettingsFactory:217 - Order SQL inserts for batching: disabled 18:32:34,828 INFO SettingsFactory:386 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 18:32:34,843 INFO ASTQueryTranslatorFactory:24 - Using ASTQueryTranslatorFactory 18:32:34,843 INFO SettingsFactory:225 - Query language substitutions: {yes='Y', no='N'} 18:32:34,843 INFO SettingsFactory:230 - JPA-QL strict compliance: disabled 18:32:34,843 INFO SettingsFactory:235 - Second-level cache: enabled 18:32:34,843 INFO SettingsFactory:239 - Query cache: disabled 18:32:34,843 INFO SettingsFactory:373 - Cache provider: org.hibernate.cache.HashtableCacheProvider 18:32:34,843 INFO SettingsFactory:254 - Optimize cache for minimal puts: disabled 18:32:34,843 INFO SettingsFactory:259 - Cache region prefix: hibernate.test 18:32:34,843 INFO SettingsFactory:263 - Structured second-level cache entries: disabled 18:32:34,843 INFO SettingsFactory:283 - Echoing all SQL to stdout 18:32:34,843 INFO SettingsFactory:290 - Statistics: disabled 18:32:34,843 INFO SettingsFactory:294 - Deleted entity synthetic identifier rollback: disabled 18:32:34,859 INFO SettingsFactory:309 - Default entity-mode: pojo 18:32:34,859 INFO SettingsFactory:313 - Named query checking : enabled 18:32:34,875 INFO SessionFactoryImpl:161 - building session factory 18:32:35,203 INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured Hibernate: select this_.groupId as groupId0_0_, this_.nameGroup as nameGroup0_0_, this_.curator as curator0_0_, this_.speciality as speciality0_0_ from groups this_ 18:32:35,281 WARN JDBCExceptionReporter:77 - SQL Error: 1054, SQLState: 42S22 18:32:35,281 ERROR JDBCExceptionReporter:78 - Unknown column 'this_.groupId' in 'field list' java.util.NoSuchElementException at java.util.AbstractList$Itr.next(AbstractList.java:350) at student.web.MainFrameServlet.processRequest(MainFrameServlet.java:155) at student.web.MainFrameServlet.doGet(MainFrameServlet.java:189) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)
|
Еще не совсем понятна ситуация с lazy. Как тут его описывать, в xml вроде все понятно, тут нет. Может ошибка из-за этого и возникает? И еще вопрос. Почему при описании связей м/у таблицами @JoinTable пишется только у метода одного класса, а у другого mappedBy? Сколько не смотрел примеров, везде так.
|