У меня есть 2 класса, Foo и FooType, где FooType - это всего лишь 3 строки в базе данных, представляющие 3 возможных типа.Я отображаю FooType в Hibernate, но нет ничего, кроме полей ID и описания.В файле FooType hbm нет сопоставления с Foo.
В Foo у меня есть сопоставление многие-к-одному, так как каждый Foo должен иметь тип.
<hibernate-mapping>
<class name="com.blah.domain.Foo" table="foos" lazy="false">
<id name="id" type="int">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="type" class="com.blah.domain.FooType" column="type" not-null="true" unique="false" update="false" fetch="join"/>
</class>
</hibernate-mapping>
Вот соответствующий бит моей конфигурации Spring
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>WEB-INF/hibernate.cfg.xml</value>
</property>
<property name="mappingResources">
<list>
<value>com/secretry/domain/Foo.hbm.xml</value>
<value>com/secretry/domain/FooType.hbm.xml</value>
</list>
</property>
</bean>
Я думаю, что это правильно, но если нет, пожалуйста, помогите.У меня есть FooDao, который использует HibernateDaoSupport для транзакций.
public class FoonDao extends HibernateDaoSupport implements IFooDao {
private IFooTypeDao fooTypeDao;
@Override
public Foo createFoo(String name, String description, int fooTypeId) {
FooType type = fooTypeDao.getFooType(fooTypeId);
Foo newFoo = new Foo(name, description, type);
try {
getHibernateTemplate().save(newFoo);
}
catch(Exception e) {
logger.error("ERROR: ", e);
return null;
}
return newFoo;
}
}
Когда я запускаю createFoo, я не вижу никаких ошибок, но в моих журналах MySQL я вижу оператор Insert
, за которым сразу следует rollback
.У меня включена полная регистрация для Hibernate, но я не вижу ничего, что показалось бы мне ошибкой.Когда я копирую вставку из журналов и запускаю ее в mysql вручную, она отлично работает , что, пожалуй, самая неприятная вещь.
Я новичок в Hibernate, поэтому я думаю, что этовозможно, что-то я делаю неправильно с сопоставлением «многие-к-одному», но я не могу понять это ради своей жизни.Любая помощь с проблемой или указанием на то, что я могу делать неправильно, будет очень цениться.Благодаря.