Задача совсем тривиальная, но я уже 2 часа не могу догнать! Просмотрел тонны туториалов. С каждой версией что-то меняется, библиотек валом, ну и нафига 100500 библиотек? Дибилизм. Как вот придти ко всему этому. С каждой версией какие-то библиотеки меняются, то гибернейту логгинг не нравится, то та библиотека старая. По сути, хочу вставить одно значение в БД, и то не могу, что за!!!..... В чем глюк? Я уже что только не пробовал, как только эти аннотации не переставлял. Гррррррр. В общем ситуация такая. Равнялся на этот туториал... http://www.java-course.ru/students/students.php?name=part18Кажется автор этого туториала обитает на этом форуме... в итоге Код |
package hibernate.test;
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table;
@Entity @Table(name="user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id") private int uId; @Column(name="first_name") private String uName;
public int getuId() { return uId; }
public void setuId(int uId) { this.uId = uId; }
public String getuName() { return uName; }
public void setuName(String uName) { this.uName = uName; }
}
|
Код | public static void main(String[] args) {
UserDao dao = new UserDao(); User user = new User(); user.setuName("Oleg"); dao.addApplicant(user);
}
|
Код | public class UserDao {
public Long addApplicant(User user) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Long result = (Long) session.save(user); session.getTransaction().commit(); return result; } }
|
Код | <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/test</property> <property name="connection.username">root</property> <property name="connection.password">root</property>
<!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">2</property>
<!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <mapping class="hibernate.test.User"/>
</session-factory>
</hibernate-configuration>
|
Табличку создаю вот так create table user(id int NOT NULL, first_name varchar(30),primary key(id)); Вот так вот дело с библиотеками https://dl.dropbox.com/u/26399837/hib.jpgВот трейс Код | log4j:WARN No appenders could be found for logger (org.hibernate.type.BasicTypeRegistry). log4j:WARN Please initialize the log4j system properly. Hibernate: insert into user (first_name) values (?) Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [hibernate.test.User] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:63) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2346) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2853) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:345) at $Proxy8.save(Unknown Source) at hibernate.test.UserDao.addApplicant(UserDao.java:10) at hibernate.test.UserTest.main(UserTest.java:15) Caused by: java.sql.SQLException: Field 'id' doesn't have a default value at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600) at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1125) at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:677) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1357) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1274) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1259) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:93) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:56) ... 23 more
|
Подскажите пож, а то я тупо убиваю время, и не знаю почему ругается. Во всех туториалах так же, - и все работает.!
|