Я следую учебнику https://www.youtube.com/watch?v=F9o-0N7tMg8&list=PLmcxdcWPhFqMq2BctGktOcIJKUw23wJeh&index=19, чтобы создать веб-сайт в Spring MVC. Учебник использует базу данных HSQL, но я предпочел использовать MySql. Мне удалось получить данные из базы данных, однако я не могу сохранить данные пользователя в базе данных.Spring MVC + Hibernate
Мои конфигурации:
applicationContext.xml:
<context:component-scan base-package="com.coolbreeze.realestate
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<!-- Load Hibernate related configuration -->
<import resource="hibernate-context.xml" />
гибернации-context.xml:
<context:property-placeholder location="/WEB-INF/spring.properties" />
<!-- Enable annotation style of managing transactions -
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- Declare a datasource that has pooling capabilities-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${app.jdbc.driverClassName}"/>
<property name="url" value="${app.jdbc.url}"/>
<property name="username" value="${app.jdbc.username}"/>
<property name="password" value="${app.jdbc.password}"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
p:dataSource-ref="dataSource"
p:configLocation="${hibernate.config}"
p:packagesToScan="com.coolbreeze.realestate">
</bean>
<!-- Declare a transaction manager-->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="emf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan" value="com.coolbreeze.realestate.entity" />
<property name="dataSource" ref="dataSource" />
<property name="persistenceProvider">
<bean class="org.hibernate.jpa.HibernatePersistenceProvider"></bean>
</property>
</bean>
<jpa:repositories base-package="com.coolbreeze.realestate.repository"
entity-manager-factory-ref = "emf" transaction-manager-ref = "transactionManager" />
гибернации-cfg.xml:
<hibernate-configuration>
<session-factory>
<!-- We're using MySQL database so the dialect needs to MySQL as well-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable this to see the SQL statements in the logs-->
<property name="show_sql">true</property>
<property name="use_sql_comments">true</property>
<!-- This will drop our existing database and re-create a new one.
Existing data will be deleted! -->
<property name="hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
UserController:
@Controller
public class UserController {
@Autowired
private UserService userService;
@ModelAttribute("user")
public User construct(){
return new User();
}
@RequestMapping(value="/register", method=RequestMethod.POST)
public String doRegister(@ModelAttribute("user") User user){
userService.save(user);
return "register";
}
UserService:
@Service
@Transactional
public class UserService {
@Autowired
private UserRepository userRepository;
public void save(User user) {
userRepository.save(user);
}
UserRepository:
public interface UserRepository extends JpaRepository<User, Integer> {
}
Пожалуйста, помогите мне, я тоже не в состоянии увидеть SQL запросов в консоли , однако он настроен для отображения в hibern съел конфигурацию xml.
Действительно ценю вас помощью.
Спасибо
Есть ли какая-либо конкретная причина вы причина у вас есть SessionFactory и EntityManagerFactory определены? Если вы не видите выход журнала, попробуйте взять содержимое в файле, подробно описанном здесь: http://www.mkyong.com/logging/log4j-log4j-properties-examples/ и вставить его в новый файл с именем log4j.properties. Если вы используете maven, то создайте это в src/main/resources –
любое исключение stacktrace, которое вы получили в консоли? – Rembo