Thanks for pointing this out, forget to correct this part On Oct 14, 2012 12:11 AM, "[email protected]" <[email protected]> wrote:
> Adding a new label + press save results in: > > <openjpa-2.2.0-r422266:1244990 nonfatal user error> > org.apache.openjpa.persistence.InvalidStateException: Encountered unmanaged > object "org.apache.openmeetings.persistence.beans.lang.Fieldvalues@605a28" in > life cycle state unmanaged while cascading persistence via field > "org.apache.openmeetings.persistence.beans.lang.Fieldlanguagesvalues.fieldvalues" > during flush. However, this field does not allow cascade persist. You > cannot flush unmanaged objects or graphs that have persistent associations to > unmanaged objects. > > > Suggested actions: a) Set the cascade attribute for this field to > CascadeType.PERSIST or CascadeType.ALL (JPA annotations) or "persist" or > "all" (JPA orm.xml), > b) enable cascade-persist globally, > > > c) manually persist the related field value prior to flushing. > d) if the reference belongs to another context, allow reference to it by > setting StoreContext.setAllowReferenceToSiblingContext(). > FailedObject: > org.apache.openmeetings.persistence.beans.lang.Fieldvalues@605a28 > > > Sebastian > > 2012/10/12 <[email protected]> > >> Author: solomax >> Date: Fri Oct 12 09:23:41 2012 >> New Revision: 1397489 >> >> URL: http://svn.apache.org/viewvc?rev=1397489&view=rev >> Log: >> MySQL is switched to InnoDB >> Wicket: language panel is fixed >> >> Added: >> >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldValueDaoImpl.java >> Modified: >> >> incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml >> >> incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml >> >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldLanguagesValuesDaoImpl.java >> >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldlanguagesvalues.java >> >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldvalues.java >> >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java >> >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/labels/LangPanel.java >> >> Modified: >> incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml >> URL: >> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1397489&r1=1397488&r2=1397489&view=diff >> >> ============================================================================== >> --- >> incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml >> (original) >> +++ >> incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml >> Fri Oct 12 09:23:41 2012 >> @@ -188,6 +188,7 @@ >> <bean id="omTimeZoneDaoImpl" >> class="org.apache.openmeetings.data.basic.dao.OmTimeZoneDaoImpl" /> >> <bean id="statemanagement" >> class="org.apache.openmeetings.data.user.dao.StateDaoImpl" /> >> <bean id="fieldLanguageDaoImpl" >> class="org.apache.openmeetings.data.basic.FieldLanguageDaoImpl" /> >> + <bean id="fieldValueDaoImpl" >> class="org.apache.openmeetings.data.basic.FieldValueDaoImpl" /> >> <bean id="fieldLanguagesValuesDAO" >> class="org.apache.openmeetings.data.basic.FieldLanguagesValuesDaoImpl" /> >> <bean id="fieldmanagment" >> class="org.apache.openmeetings.data.basic.Fieldmanagment" /> >> <bean id="configurationDaoImpl" >> class="org.apache.openmeetings.data.basic.dao.ConfigurationDaoImpl" /> >> >> Modified: >> incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml >> URL: >> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml?rev=1397489&r1=1397488&r2=1397489&view=diff >> >> ============================================================================== >> --- >> incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml >> (original) >> +++ >> incubator/openmeetings/trunk/singlewebapp/src/META-INF/mysql_persistence.xml >> Fri Oct 12 09:23:41 2012 >> @@ -89,7 +89,7 @@ >> <property name="openjpa.DataCache" value="true"/> >> <!-- QueryCache disabled due to changes outside >> of JPA doesn't take effect with caching --> >> <property name="openjpa.QueryCache" >> value="false"/> >> - <property name="openjpa.jdbc.DBDictionary" >> value="batchLimit=100,tableType=myisam"/> >> + <property name="openjpa.jdbc.DBDictionary" >> value="batchLimit=100"/> >> <property name="openjpa.jdbc.QuerySQLCache" >> value="false"/> >> </properties> >> </persistence-unit> >> >> Modified: >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldLanguagesValuesDaoImpl.java >> URL: >> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldLanguagesValuesDaoImpl.java?rev=1397489&r1=1397488&r2=1397489&view=diff >> >> ============================================================================== >> --- >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldLanguagesValuesDaoImpl.java >> (original) >> +++ >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldLanguagesValuesDaoImpl.java >> Fri Oct 12 09:23:41 2012 >> @@ -92,6 +92,19 @@ public class FieldLanguagesValuesDaoImpl >> return flv; >> } >> >> + public Fieldlanguagesvalues get(long fieldValuesId, long langId) { >> + TypedQuery<Fieldlanguagesvalues> q = em.createNamedQuery( >> + "getFieldLanguagesValuesByValueAndLang", >> Fieldlanguagesvalues.class); >> + q.setParameter("fieldValuesId", fieldValuesId); >> + q.setParameter("lang", langId); >> + Fieldlanguagesvalues flv = null; >> + try { >> + flv = q.getSingleResult(); >> + } catch (NoResultException e) { >> + } >> + return flv; >> + } >> + >> /* >> * (non-Javadoc) >> * >> >> Added: >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldValueDaoImpl.java >> URL: >> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldValueDaoImpl.java?rev=1397489&view=auto >> >> ============================================================================== >> --- >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldValueDaoImpl.java >> (added) >> +++ >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/basic/FieldValueDaoImpl.java >> Fri Oct 12 09:23:41 2012 >> @@ -0,0 +1,88 @@ >> +/* >> + * Licensed to the Apache Software Foundation (ASF) under one >> + * or more contributor license agreements. See the NOTICE file >> + * distributed with this work for additional information >> + * regarding copyright ownership. The ASF licenses this file >> + * to you under the Apache License, Version 2.0 (the >> + * "License") + you may not use this file except in compliance >> + * with the License. You may obtain a copy of the License at >> + * >> + * http://www.apache.org/licenses/LICENSE-2.0 >> + * >> + * Unless required by applicable law or agreed to in writing, >> + * software distributed under the License is distributed on an >> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >> + * KIND, either express or implied. See the License for the >> + * specific language governing permissions and limitations >> + * under the License. >> + */ >> +package org.apache.openmeetings.data.basic; >> + >> +import java.util.List; >> + >> +import javax.persistence.EntityManager; >> +import javax.persistence.PersistenceContext; >> +import javax.persistence.TypedQuery; >> + >> +import org.apache.openmeetings.data.OmDAO; >> +import org.apache.openmeetings.data.basic.dao.ConfigurationDaoImpl; >> +import org.apache.openmeetings.persistence.beans.lang.Fieldvalues; >> +import org.springframework.beans.factory.annotation.Autowired; >> +import org.springframework.transaction.annotation.Transactional; >> + >> +@Transactional >> +public class FieldValueDaoImpl implements OmDAO<Fieldvalues> { >> + @PersistenceContext >> + private EntityManager em; >> + @Autowired >> + private ConfigurationDaoImpl configurationDaoImpl; >> + @Autowired >> + private FieldLanguagesValuesDaoImpl flvDaoImpl; >> + >> + public Fieldvalues get(long id) { >> + return >> get(configurationDaoImpl.getConfValue("default_lang_id", >> + Long.class, "1"), id); >> + } >> + >> + public Fieldvalues get(Long language_id, long id) { >> + TypedQuery<Fieldvalues> q = >> em.createNamedQuery("getFieldByIdAndLanguage", Fieldvalues.class); >> + q.setParameter("id", id); >> + q.setParameter("lang", language_id); >> + List<Fieldvalues> l = q.getResultList(); >> + return l == null || l.isEmpty() ? null : l.get(0); >> + } >> + >> + public List<Fieldvalues> get(int start, int count) { >> + return >> get(configurationDaoImpl.getConfValue("default_lang_id", >> + Long.class, "1"), start, count); >> + } >> + >> + public List<Fieldvalues> get(Long language_id, int start, int >> count) { >> + TypedQuery<Fieldvalues> q = >> em.createNamedQuery("getFieldByLanguage", Fieldvalues.class); >> + //q.setParameter("lang", language_id); //FIXME commented >> for now >> + q.setFirstResult(start); >> + q.setMaxResults(count); >> + List<Fieldvalues> result = q.getResultList(); >> + for (Fieldvalues fv : result) { >> + //FIXME ineffective !!!!!!!!!!!!!!!!!!!! >> + >> fv.setFieldlanguagesvalue(flvDaoImpl.get(fv.getFieldvalues_id(), >> language_id)); >> + } >> + return result; >> + } >> + >> + public long count() { >> + TypedQuery<Long> q = em.createNamedQuery("getFieldCount", >> Long.class); >> + return q.getSingleResult(); >> + } >> + >> + public void update(Fieldvalues entity, long userId) { >> + // TODO Auto-generated method stub >> + >> + } >> + >> + public void delete(Fieldvalues entity, long userId) { >> + // TODO Auto-generated method stub >> + >> + } >> + >> +} >> >> Modified: >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldlanguagesvalues.java >> URL: >> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldlanguagesvalues.java?rev=1397489&r1=1397488&r2=1397489&view=diff >> >> ============================================================================== >> --- >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldlanguagesvalues.java >> (original) >> +++ >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldlanguagesvalues.java >> Fri Oct 12 09:23:41 2012 >> @@ -54,6 +54,8 @@ import org.apache.openmeetings.persisten >> + " AND flv.language_id = 1 AND >> flv.fieldvalues_id NOT IN (:id_list)") >> , @NamedQuery(name="getFieldLanguagesValuesById" >> , query = "SELECT f FROM Fieldlanguagesvalues f WHERE >> f.fieldlanguagesvalues_id = :id") >> + , @NamedQuery(name="getFieldLanguagesValuesByValueAndLang" >> + , query = "SELECT f FROM Fieldlanguagesvalues f WHERE >> f.fieldvalues_id = :fieldValuesId AND f.language_id = :lang AND f.deleted = >> false") >> }) >> @Table(name = "fieldlanguagesvalues") >> public class Fieldlanguagesvalues implements Serializable, OmEntity { >> >> Modified: >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldvalues.java >> URL: >> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldvalues.java?rev=1397489&r1=1397488&r2=1397489&view=diff >> >> ============================================================================== >> --- >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldvalues.java >> (original) >> +++ >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/lang/Fieldvalues.java >> Fri Oct 12 09:23:41 2012 >> @@ -33,12 +33,18 @@ import javax.persistence.OneToMany; >> import javax.persistence.Table; >> import javax.persistence.Transient; >> >> +import org.apache.openmeetings.persistence.beans.OmEntity; >> + >> @Entity >> @NamedQueries({ >> @NamedQuery(name = "getFieldCount", query = "SELECT COUNT(fv) >> FROM Fieldvalues fv WHERE fv.deleted = false ") >> + , @NamedQuery(name = "getFieldByIdAndLanguage", query = "SELECT >> fv FROM Fieldvalues fv " + >> + "LEFT OUTER JOIN FETCH fv.fieldlanguagesvalues flv WHERE >> " + >> + " fv.fieldvalues_id = :id AND fv.deleted = false >> AND flv.language_id = :lang") >> + , @NamedQuery(name = "getFieldByLanguage", query = "SELECT fv >> FROM Fieldvalues fv WHERE fv.deleted = false") //FIXME no language yet >> }) >> @Table(name = "fieldvalues") >> -public class Fieldvalues implements Serializable { >> +public class Fieldvalues implements Serializable, OmEntity { >> private static final long serialVersionUID = >> -3439614511218028085L; >> @Id >> @Column(name="id") >> >> Modified: >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java >> URL: >> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java?rev=1397489&r1=1397488&r2=1397489&view=diff >> >> ============================================================================== >> --- >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java >> (original) >> +++ >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/groups/GroupsPanel.java >> Fri Oct 12 09:23:41 2012 >> @@ -80,7 +80,6 @@ public class GroupsPanel extends AdminPa >> form.hideNewRecord(); >> >> form.setModelObject(organisation); >> form.updateView(target); >> - //target.add(form); >> } >> }); >> >> item.add(AttributeModifier.append("class", "clickable " + ((item.getIndex() >> % 2 == 1) ? "even" : "odd"))); >> >> Modified: >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/labels/LangPanel.java >> URL: >> http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/labels/LangPanel.java?rev=1397489&r1=1397488&r2=1397489&view=diff >> >> ============================================================================== >> --- >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/labels/LangPanel.java >> (original) >> +++ >> incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/labels/LangPanel.java >> Fri Oct 12 09:23:41 2012 >> @@ -21,9 +21,10 @@ package org.apache.openmeetings.web.comp >> import java.util.Iterator; >> >> import org.apache.openmeetings.data.basic.FieldLanguageDaoImpl; >> -import org.apache.openmeetings.data.basic.FieldLanguagesValuesDaoImpl; >> +import org.apache.openmeetings.data.basic.FieldValueDaoImpl; >> import org.apache.openmeetings.persistence.beans.lang.FieldLanguage; >> import >> org.apache.openmeetings.persistence.beans.lang.Fieldlanguagesvalues; >> +import org.apache.openmeetings.persistence.beans.lang.Fieldvalues; >> import org.apache.openmeetings.web.app.Application; >> import org.apache.openmeetings.web.components.admin.AdminPanel; >> import org.apache.openmeetings.web.components.admin.PagedEntityListPanel; >> @@ -60,15 +61,15 @@ public class LangPanel extends AdminPane >> form.showNewRecord(); >> add(form); >> >> - final DataView<Fieldlanguagesvalues> dataView = new >> DataView<Fieldlanguagesvalues>( >> - "langList", new >> OmDataProvider<Fieldlanguagesvalues>( >> - >> FieldLanguagesValuesDaoImpl.class) { >> + final DataView<Fieldvalues> dataView = new >> DataView<Fieldvalues>( >> + "langList", new >> OmDataProvider<Fieldvalues>( >> + FieldValueDaoImpl.class) { >> private static final long >> serialVersionUID = -6822789354860988626L; >> >> - public Iterator<? extends >> Fieldlanguagesvalues> iterator( >> + public Iterator<? extends >> Fieldvalues> iterator( >> long first, long >> count) { >> return Application >> - >> .getBean(FieldLanguagesValuesDaoImpl.class) >> + >> .getBean(FieldValueDaoImpl.class) >> >> .get(language.getLanguage_id(), (int) first, >> >> (int) count).iterator(); >> } >> @@ -76,16 +77,16 @@ public class LangPanel extends AdminPane >> private static final long serialVersionUID = >> 8715559628755439596L; >> >> @Override >> - protected void populateItem(final >> Item<Fieldlanguagesvalues> item) { >> - final Fieldlanguagesvalues flv = >> item.getModelObject(); >> - item.add(new Label("lblId", "" + >> flv.getFieldvalues_id())); >> - item.add(new Label("name", >> flv.getFieldvalues().getName())); >> - item.add(new Label("value", >> flv.getValue())); >> + protected void populateItem(final >> Item<Fieldvalues> item) { >> + final Fieldvalues fv = >> item.getModelObject(); >> + item.add(new Label("lblId", "" + >> fv.getFieldvalues_id())); >> + item.add(new Label("name", fv.getName())); >> + item.add(new Label("value", >> fv.getFieldlanguagesvalue() != null ? >> fv.getFieldlanguagesvalue().getValue() : null)); >> item.add(new AjaxEventBehavior("onclick") >> { >> private static final long >> serialVersionUID = -8069413566800571061L; >> >> protected void >> onEvent(AjaxRequestTarget target) { >> - form.setModelObject(flv); >> + >> form.setModelObject(fv.getFieldlanguagesvalue()); >> form.hideNewRecord(); >> target.add(form); >> } >> >> >> > > > -- > Sebastian Wagner > https://twitter.com/#!/dead_lock > http://www.webbase-design.de > http://www.wagner-sebastian.com > [email protected] >
