2013-04-29 24 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

相關問題