0

我有一个使用 @Converter 的 JPA @Entity 'RecipestepBO':

@Entity
@Converter( name="UnitConverter", converterClass=com.lemcke.share.recipe.Unit.class )
@Table(name = "recipestep")
public class RecipestepBO {
...
private Unit rpsunit = null;
...
@Column( name="rpsunit" )
@Convert( "UnitConverter" )
public Unit getRpsunit() { return rpsunit; }
...
}

和同一个包中的转换器类(实际上是一个枚举):

package com.lemcke.share.recipe;

public enum Unit implements Converter {
Liter ( "l" )
....
all overloaded methods from the Converter
....
}

启动应用程序会导致以下 EclipseLink 异常:

线程“主”javax.persistence.PersistenceException 中的异常:异常 [EclipseLink-28019] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345):org.eclipse.persistence.exceptions.EntityManagerSetupException 异常描述:部署 PersistenceUnit [testPU]失败的。关闭此 PersistenceUnit 的所有工厂。内部异常:异常 [EclipseLink-7198](Eclipse Persistence Services - 2.4.1.v20121003-ad44345):org.eclipse.persistence.exceptions.ValidationException 异常描述:类:[com.lemcke.share.recipe.Unit] 不是在从类名转换为类时发现。

实体写在 persistence.xml 文件中。转换器“单位”不是(因为它不是实体)。

我究竟做错了什么?

4

1 回答 1

0

转换器应该是一个类,而不是枚举,不确定枚举是否有效或有意义。

尝试一个类,如果仍然不走运,请包括完整的异常堆栈跟踪(包括由引起的)。

于 2013-05-09T12:50:33.407 回答