another "ugly" solution is the following: instad of
| @XmlIDREF | use: | @XmlJavaTypeAdapter(Entity2StringXMLAdapter.class) | and here is the implementation for the Adapter: | public class Entity2StringXMLAdapter extends XmlAdapter<String,BasicEntity> | { | | @Override | public String marshal(final BasicEntity entityGot) throws Exception | { | | String strValue = ""; | try | { | strValue = entityGot.getName() + "(" + entityGot.getId() + ")"; | } | catch (LazyInitializationException e) | { | Long id = this.getEntityID(entityGot); | if(id == null) | id = new Long(-1); | strValue = "lazy (" + id + ")"; | | } | return strValue; | } | | @Override | public BasicEntity unmarshal(final String arg0) throws Exception | { | return null; | } | | private Long getEntityID(final BasicEntity entityGot) | { | //dirty, but it works: | //long duration = System.currentTimeMillis(); | Long entityId = null; | Class clazz = entityGot.getClass(); | for(Field fieldHandler : clazz.getDeclaredFields()) | { | if(fieldHandler.getType().isAssignableFrom(javassist.util.proxy.MethodHandler.class) && fieldHandler.getName().equals("handler")) | { | try | { | fieldHandler.setAccessible(true); | javassist.util.proxy.MethodHandler methodHandler = (javassist.util.proxy.MethodHandler) fieldHandler.get(entityGot); | | Field fieldID = AbstractLazyInitializer.class.getDeclaredField("id"); | fieldID.setAccessible(true); | entityId = (Long)fieldID.get(methodHandler); | } | catch (SecurityException e1) | { | e1.printStackTrace(); | } | catch (IllegalArgumentException e1) | { | e1.printStackTrace(); | } | catch (IllegalAccessException e1) | { | e1.printStackTrace(); | } | catch (NoSuchFieldException e1) | { | System.out.println("======= THIS EXCEPTION DEPENDS ON A NEWER HIBERNATE VERSION!!!!!! ========"); | e1.printStackTrace(); | } | break; | } | } | return entityId; | } | } | BasicEntity is just Interface that is implemented by all my entities with the following methods: | public Long getId(); | public void setId(final Long idGot); | public String getName(); | public void setName(final String strNameGot); | View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4165354#4165354 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4165354 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user