我在Enver和MySql 5.6中使用HiberNate 4.3.4。
如果没有 JPA 2.1 转换器,下面的 Party
实体在 Configuration.buildSessionFactory()
上会失败,因为 Hibernate 不知道如何处理 Name 类:
@Entity
@Audited
public class Party
{
protected Name name;
...
}
例外情况是:
org.hibernate.MappingException:
Could not determine type for:
ModuloADM.Party.Name,
at table: Party, for columns: [org.hibernate.mapping.Column(name)]
为了解决这个问题,我然后添加这个转换器:
@Converter (autoApply=true)
public class NametoStringConverter
implements AttributeConverter<Name, String>
{ ... }
现在,异常变为:
org.hibernate.MappingException:
Could not determine type for:
BasicType adapter for AttributeConverter<Name,String>,
at table: History_Party, for columns: [org.hibernate.mapping.Column(name)]
这现在在参与方
实体的Envers审计表中失败。请注意,History_Party
是审核表的名称,由config.setProperty(“org.hhibernate.envers.audit_table_prefix”,“History_”)
选择。
完整的堆栈跟踪是:
org.hibernate.MappingException:
Could not determine type for:
BasicType adapter for AttributeConverter<Name,String>,
at table: History_Party, for columns: [org.hibernate.mapping.Column(name)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336)
at org.hibernate.tuple.PropertyFactory.buildEntityBasedAttribute(PropertyFactory.java:246)
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:227)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:520)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:148)
at sun.reflect.GeneratedConstructorAccessor43.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163)
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:401)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857)
我如何解决这个问题?Envers甚至与AttributeConverters兼容吗?
我在异常中看到文本“Generated ConstructorAccessor43”。可能需要一个公共 void 构造函数,以便 JPA 可以创建 NametoStringConverter 的实例。
默认构造函数应该可以工作,但请检查您是否有另一个具有接收参数或不公开的构造函数。
这似乎是Hibernate Envers (HHH-9042)的一个已知问题。
一个简单的解决方法是手动调用Conver和一个附加的瞬态字段,如下所示:
@Entity
public class Party {
protected Name name;
@Transient
protected String nameString;
//...
public void setName(Name name) {
this.nameString = (new NametoStringConverter()).convertToDatabaseColumn(name);
this.name = name;
}
//...
public void setNameString(String nameString) {
this.name = (new NametoStringConverter()).convertToEntityAttribute(nameString);
this.nameString = nameString;
}
}
根据转换函数,可以通过使它们静态
并导入它们来进一步简化代码。
尝试在<code>Party</code>实体中使用@Convert。有时autoApply
标志不起作用
@Entity
@Audited
public class Party
{
@Convert(converter = NametoStringConverter.class)
protected Name name;
...
}
我已经从.shap文件转换了GeoJson文件。每个对象都有弧、点和一些其他特性。现在,当我试图用这个在线应用程序将这个GeoJson文件转换为TopoJson文件时http://shancarter.github.io/distillery/ 转换后的TopoJson与D3.js配合使用,但对象只有类型:多边形和圆弧属性。所有其他属性,如id、GEOFIP等都消失了。我需要这些属性,但至少需要2
我使用ModelMapper将一些对象转换为复杂的DTO,反之亦然。 尽管我试图理解留档,但我发现很难理解何时使用转换器、提供程序或抽象转换器。 现在,例如,如果我想将字符串属性转换为目标DTO中的小DTO,我将在抽象转换器中手动执行。 例如: 虽然这是正确的方法吗?我应该何时使用提供商? 如果我想用条件设置属性,我可以在转换器中使用条件吗?或者只有在使用PropertyMap时才能使用条件? 此
如果您需要在Aurelia应用程序中转换某些值,则可以使用converters而不是手动将值转换为所需的格式。 转换日期 当我们想要将默认日期值转换为某种特定格式时,我们可以使用momentJS库。 这是一个用于操作日期的小型库。 C:\Users\username\Desktop\aureliaApp>jspm install moment 让我们创建一个新文件converters.js 。
XStream转换器是XStream库的关键组件,它负责将对象转换为XML,反之亦然。 XStream为常见类型提供了大量转换器,例如基元,字符串,文件,集合,数组和日期。 使用转换器 让我们使用SingleValueConvertor,其目的是将对象转换为单个字符串。 我们将使用SingleValueConvertor将对象写为属性字符串。 创建转换器 class NameConverter i
程序说明: 1. 依赖:Windows操作系统,.Net FrameWork 3.5, Office Word 2. Word另存为HTML有几种格式可以选:单个网页mht,网页htm以及筛选过的网页htm。我选择的是筛选过的html,所有公式全部转成gif或者jpg图片,稍微规范一点的htm不会含有微软中的一些恶心的格式信息。 运行界面如下: 1. 程序初始界面: 2. “Open”选择一个
问题内容: 在SQL 9(2005)中创建了一个存储过程,此后已升级到SQL 10(2008)。从那时起,以下存储过程停止工作并引发上述错误: 传入的参数@vPortalUID包含:2A66057D-F4E5-4E2B-B2F1-38C51A96D385。我执行这样的存储过程: 它跌倒了。我也尝试过转换。仍然没有喜悦。也具有将{}括起来的价值。我如上所述以编程方式和手动方式删除了这些内容。 如果您