2013-04-29 51 views
0

当我直接在数据库(SQL Server)中进行更改时(如向表中添加新行),更改未反映在我的Web应用程序中(尝试刷新浏览器)直到我再次运行我的应用程序(在intellij与tomcat插件)。数据库更改未反映在JSF 2 Web应用程序中

如果我从我的应用程序添加一行,我可以在我的数据库管理员身上看到它,但其他方式无法正常工作。

这是我的persitence.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="Frutemu" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
     <jta-data-source>openjpa</jta-data-source> 
     <class>model2.AnalisisProcesosEntity</class> 
     <class>model2.AnalisisProcesosDetalleEntity</class> 
     <class>model2.AnalisisProcesosPesosEntity</class> 
     <class>model2.AnalisisRecepcionesEntity</class> 
     <class>model2.AnalisisRecepcionesDetallesEntity</class> 
     <class>model2.CalibresEntity</class> 
     <class>model2.CalidadDefectosEntity</class> 
     <class>model2.CalidadesEntity</class> 
     <class>model2.CamarasEntity</class> 
     <class>model2.DespachosEntity</class> 
     <class>model2.DespachosDetalleEntity</class> 
     <class>model2.EspeciesEntity</class> 
     <class>model2.ExportadorasEntity</class> 
     <class>model2.InspeccionesEntity</class> 
     <class>model2.InspeccionesDespachosEntity</class> 
     <class>model2.InspeccionesDespachosDetalleEntity</class> 
     <class>model2.InspeccionesDetalleEntity</class> 
     <class>model2.InspeccionesPalletsEntity</class> 
     <class>model2.InspeccionesPalletsDetalleEntity</class> 
     <class>model2.InspeccionesResultadoEntity</class> 
     <class>model2.PalletsEntity</class> 
     <class>model2.PalletsDetalleEntity</class> 
     <class>model2.PlantasEntity</class> 
     <class>model2.PlantasEmbalajeEntity</class> 
     <class>model2.ProcesosEntity</class> 
     <class>model2.ProcesosDetalleEntity</class> 
     <class>model2.ProductoresEntity</class> 
     <class>model2.ProductoresExportadorasEntity</class> 
     <class>model2.RecepcionesEntity</class> 
     <class>model2.RecepcionesDetalleEntity</class> 
     <class>model2.SysdiagramsEntity</class> 
     <class>model2.TemporadasEntity</class> 
     <class>model2.TiposEmbalajeEntity</class> 
     <class>model2.TiposProductoEntity</class> 
     <class>model2.UsuariosEntity</class> 
     <class>model2.VariedadesEntity</class> 
     <class>model2.VistaProcesosEntity</class> 
     <class>model2.VistaRecepcionesEntity</class> 

     <properties> 

      <property name="openjpa.ConnectionDriverName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> 
      <property name="openjpa.ConnectionURL" value="jdbc:sqlserver://localhost:55334;databaseName=Frutemu;integratedSecurity=true"/> 
      <property name="openjpa.ConnectionUserName" value=""/> 
      <property name="openjpa.ConnectionPassword" value=""/> 

      <property name="openjpa.jdbc.SynchronizeMappings" 
         value="buildSchema(SchemaAction='add,OpenJPATables=true',ForeignKeys=true)"/> 
      <!--property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(SchemaAction='add,OpenJPATables=true',ForeignKeys=true)"/--> 
      <property name="openjpa.DynamicEnhancementAgent" value="true"/> 
      <property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=ERROR"/> 
      <property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000"/> 
      <property name="openjpa.jdbc.DBDictionary" value="org.apache.openjpa.jdbc.sql.MySQLDictionary"/> 
      <property name="openjpa.DataCache" value="true"/> 
      <property name="openjpa.QueryCache" value="true"/> 


     </properties> 
    </persistence-unit> 
</persistence> 

这是从哪里获得的数据,在我看来显示豆:

@ManagedBean(name = "recepciones") 
@ViewScoped 
public class RecepcionesBean { 

     private List<VistaRecepcionesEntity> recepciones; 

     @PostConstruct 
     public void init(){ 
      recepciones=new ArrayList<VistaRecepcionesEntity>(); 
      recepciones= RecepcionesDAO.getALL(); 
     } 

     public List<VistaRecepcionesEntity> getRecepciones() { 
      return recepciones; 
     } 

     public void setRecepciones(List<VistaRecepcionesEntity> recepciones) { 
      this.recepciones = recepciones; 
     } 


     } 
    } 
+0

告诉我们你如何去打你的文件。我最好的猜测是你需要刷新你的实体。 – skuntsel 2013-04-29 11:06:44

+0

我添加了从哪里获取我的视图的数据的bean。 – user1462933 2013-04-29 13:47:47

回答

1

我不熟悉的OpenJPA。但选项openjpa.DataCache似乎表明您有一个为数据激活的缓存。在这种情况下,有几种策略。

  1. 如果你真的不需要直接“手动”更新数据库,那就不要。或者取消激活缓存。其中一个可能是最安全或最简单的。
  2. 否则,您可能需要自定义缓存策略。您可能会在X分钟后使缓存失效(并且接受您的应用中可能有过时X分钟的陈旧数据)。
  3. 或者你也可以编写一个页面,让你手动清除缓存。您可以在每次手动更新数据库时调用它。
+0

谢谢,我现在就试试。 – user1462933 2013-04-29 13:54:00

+0

它工作更改数据和查询缓存为false;) – user1462933 2013-04-29 16:37:03

相关问题