在数据库中直接更改内容后,Hibernate不更新实体?

时间:2014-03-20 07:20:00

标签: java hibernate

大家好我有一个非常奇怪的问题让我先显示我的配置等。这是persitance.xml:

<persistence-unit name="allegroTransactionPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/AllegroShop?UseUnicode=true&amp;characterEncoding=utf8" />
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
        <property name="hibernate.connection.username" value="topSecret" />
        <property name="hibernate.connection.password" value="topSecret" />
        <!-- <property name="hibernate.hbm2ddl.auto" value="create" /> -->
        <property name="hibernate.hbm2ddl.auto" value="create" />
        <property name="show_sql" value="true" />
        <property name="hibernate.hbm2ddl.import_files" value="/SQL/payment_type.sql"/>
        <property name="hibernate.connection.useUnicode" value="true" />
        <property name="hibernate.connection.characterEncoding" value="UTF-8" />
        <property name="hibernate.connection.charSet" value="UTF-8" />
    </properties>
</persistence-unit>

这是我用来从我的数据库中获取数据的方法:

@PersistenceContext( unitName = "allegroTransactionPersistenceUnit", type= PersistenceContextType.EXTENDED )
protected EntityManager em;

public List<AllegroTransactionImpl> readAllegroTransactionByCreateDate()
{
    TypedQuery<AllegroTransactionImpl> query = this.em.createQuery( "SELECT allegroTransaction FROM com.springapp.mvc.classes.AllegroTransactionImpl allegroTransaction ORDER BY createDate DESC", AllegroTransactionImpl.class);
    return  query.getResultList();
}

现在问题。如果我使用hibernate更新/删除/添加,一切都很好。但如果我直接在base中更改某些值(通过SQL语句),hibernate不会刷新它的问题是为什么?

实体类

https://gist.github.com/spec8320/144100f049f54b73ad86

1 个答案:

答案 0 :(得分:0)

  1. 请确保您已通过SQL语句提交更改。
  2. 请检查您是否在AllegroTransactionImpl上启用了二级缓存