Glad it worked. I'll see what can be done about preventing this kind of bug in the future.
--j On Thu, Jan 22, 2009 at 4:58 PM, Charles F. Munat <c...@munat.com> wrote: > > Thank you! Thank you! Thank you! Thank you! Thank you! > > That worked. I should've seen it though as I'd already made that fix on > other sites. I don't know how I missed it. Tired, I guess. > > Pressure off now for a moment at least. > > Chas. > > Jorge Ortiz wrote: > > Ahh, I see what the problem might be. There was another change to > EnumvType: > > > > Replace this line: > > return et.valueOf(value) > > With this line: > > return et.valueOf(value).getOrElse(null) > > > > I'm sorry this is causing you so much trouble Chas. I made changes to > > classes in JPADemo and didn't realize they were used as template code > > for other projects. > > > > Perhaps these classes should be rolled into a lift-jpa module so that > > everyone can share the same code? > > > > --j > > > > On Thu, Jan 22, 2009 at 3:16 PM, Charles F. Munat <c...@munat.com > > <mailto:c...@munat.com>> wrote: > > > > > > I have an entity thus: > > > > @Entity > > @Table{val name = "cocktails"} > > class Cocktail extends BaseEntity { > > @Id > > @GeneratedValue{val strategy = GenerationType.AUTO} > > var id : Long = _ > > > > var name : String = "" > > > > var description : String = "" > > > > var ingredients : String = "" > > > > @Column{val name = "file_name"} > > var fileName : String = "" > > > > @Column{val name = "is_archived"} > > var isArchived : Boolean = false > > > > @Type{val `type` = "com.xxx.model.CocktailGroupType"} > > @Column{val name="cocktail_group"} > > var cocktailGroup: CocktailGroup.Value = CocktailGroup.Originals > > } > > > > > > > > Which uses this enumeration: > > > > object CocktailGroup extends Enumeration with Enumv { > > val Originals = Value("Originals") > > val Contemporaries = Value("Contemporaries") > > val Classics = Value("Classics") > > val Others = Value("Others") > > } > > > > class CocktailGroupType extends EnumvType(CocktailGroup) {} > > > > > > > > Which is queried thus in orm.xml: > > > > <named-query name="findCocktailsByGroup"> > > <query><![CDATA[from Cocktail c > > where c.isArchived = false > > and c.cocktailGroup = :cocktailGroup > > order by c.name <http://c.name>]]></query> > > </named-query> > > > > > > > > And called from CocktailOps.scala: > > > > 120: val cocktails = Model.createNamedQuery[Cocktail]( > > "findCocktailsByGroup", > > "cocktailGroup" -> "Originals").findAll > > > > > > > > Using Enumv: > > > > trait Enumv { > > > > this: Enumeration => > > > > private var nameDescriptionMap = > > scala.collection.mutable.Map[String, String]() > > > > def Value(name: String, desc: String) : Value = { > > nameDescriptionMap += (name -> desc) > > new Val(name) > > } > > > > def getDescriptionOrName(ev: this.Value) = { > > try { > > nameDescriptionMap(""+ev) > > } catch { > > case e: NoSuchElementException => ev.toString > > } > > } > > > > def getNameDescriptionList = this.elements.toList.map( > > v => (v.toString, getDescriptionOrName(v) ) ).toList > > } > > > > > > > > And EnumvType: > > > > abstract class EnumvType(val et: Enumeration with EnumTrait) > > extends UserType { > > > > val SQL_TYPES = Array({Types.VARCHAR}) > > > > override def sqlTypes() = SQL_TYPES > > > > override def returnedClass = classOf[et.Value] > > > > override def equals(x: Object, y: Object): Boolean = { > > return x == y > > } > > > > override def hashCode(x: Object) = x.hashCode > > > > override def nullSafeGet(resultSet: ResultSet, > > names: Array[String], > > owner: Object): Object = { > > val value = resultSet.getString(names(0)) > > if (resultSet.wasNull()) return null > > else { > > return et.valueOf(value) > > } > > } > > > > override def nullSafeSet(statement: PreparedStatement, > > value: Object, > > index: Int): Unit = { > > if (value == null) { > > statement.setNull(index, Types.VARCHAR) > > } else { > > val en = value.toString > > statement.setString(index, en) > > } > > } > > > > override def deepCopy(value: Object): Object = value > > > > override def isMutable() = false > > > > override def disassemble(value: Object) = > > value.asInstanceOf[Serializable] > > > > override def assemble(cached: Serializable, owner: Object): > > Serializable = cached > > > > override def replace(original: Object, > > target: Object, > > owner: Object) = original > > > > } > > > > > > Which gets me this error: > > > > Exception occured while processing /drinks/ > > > > Message: javax.persistence.PersistenceException: > > org.hibernate.PropertyAccessException: could not set a field value by > > reflection setter of com.xxx.model.Cocktail.cocktailGroup > > > > > > org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630) > > org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:75) > > com.xxx.model.ScalaQuery.getResultList(JPA.scala:82) > > com.xxx.model.ScalaQuery.findAll(JPA.scala:77) > > com.xxx.snippet.CocktailOps.originals(CocktailOps.scala:120) > > > > > > > > > > I have tried everything I can think of. This used to work before the > > recent switch to 2.7.3. Can anyone spot the problem? > > > > Thanks. Website down. Am really screwed here. > > > > Chas. > > > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---