当前位置: 首页 > 知识库问答 >
问题:

EJB JAR中的JPA转换器

荆钱明
2023-03-14

我试图为Joda-Time定义一个JPA@converter,它与JPA@entity@stateless会话bean的结果一起放入EJB JAR中,如下所示:

@Converter(autoApply = true)
public class LocalDateConverter implements
        AttributeConverter<LocalDate, String> {

    @Override
    public String convertToDatabaseColumn(final LocalDate localDate) {
        if (localDate == null) {
            return null;
        }
        return localDate.toString();
    }

    @Override
    public LocalDate convertToEntityAttribute(final String dbData) {
        if (dbData == null) {
            return null;
        }
        return LocalDate.parse(dbData);
    }
}

我有一个会话bean,看起来像:

@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class VenueTableModule {

    @PersistenceContext
    EntityManager em;

    public Bar foo() {
        final Bar bar = new Bar ();
        bar.name = "foo" + UUID.randomUUID();
        bar.startDate = LocalDate.now();
        em.persist(bar);
        em.flush();
        return bar;
    }
}

当我从servlet调用em.persist(bar)行时,它会失败。代码在没有em.*行的情况下工作。当转换器、无状态会话bean等被移动到web应用程序时,我不会得到错误,我知道这是允许的,而且我可能必须这样做。因此@converter使用的类加载器似乎与EJB JAR的其余部分不同。

我正在使用GlassFish4.0,我不确定这是一个bugglassFish-21161还是我只是做错了什么。然而,我所拥有的代码似乎可以与WildFly一起工作

共有1个答案

弘承运
2023-03-14

AttributeConverter是泛型类型类。请参阅下面的Java文档:

/**
 * A class that implements this interface can be used to convert 
 * entity attribute state into database column representation 
 * and back again.
 * Note that the X and Y types may be the same Java type.
 *
 * @param <X>  the type of the entity attribute
 * @param <Y>  the type of the database column
 */
public interface AttributeConverter<X,Y> 

尝试将LocalDateConverter更改为

public class LocalDateConverter implements AttributeConverter<LocalDate, String> 

其中localdate是实体bean中属性的类型,string数据库希望作为varcharchartext字段使用的类型。

 类似资料:
  • 我将spring与JPA一起使用,并尝试使用@query与SQL query一起执行查询,并尝试将结果映射到一个对象。我有不同的实体类和映射到其他dto,因为我不想要所有的列。获取以下错误 如何解决上述问题。 如果问题无法解决,那么我们可以使用spring data JPA在不使用@Query的情况下解决问题吗?怎么做? 使用JPQL::编辑:: 获取以下错误

  • 我用一个byte[]的图像取得了一类成就。 问题是用户将图像URL发送到create的endpoint spring在读取请求正文时抛出错误,甚至不允许我将图像转换为字节数组。 JSON分析错误:无法从字符串“//img.favpng.com/13/18/21/computer-icons-acquirement-trophy-award-png-favpng-tyahj0mkcwhjyqa1bp

  • 我在Enver和MySql 5.6中使用HiberNate 4.3.4。 如果没有 JPA 2.1 转换器,下面的 实体在 上会失败,因为 Hibernate 不知道如何处理 Name 类: 例外情况是: 为了解决这个问题,我然后添加这个转换器: 现在,异常变为: 这现在在实体的Envers审计表中失败。请注意,是审核表的名称,由选择。 完整的堆栈跟踪是: 我如何解决这个问题?Envers甚至与A

  • 我有一个名为<code>律师</code>的实体,在<code>律师库中有以下代码: 如您所见,我想返回< code > Java lang . control . option 而不是< code>java.util.Optional。它会导致以下异常: org.springframework.core.convert.ConversionFailedException:无法从类型 [java.

  • 我有一个存储库方法

  • 和RDD类似,transformation允许从输入DStream来的数据被修改。DStreams支持很多在RDD中可用的transformation算子。一些常用的算子如下所示: Transformation Meaning map(func) 利用函数func处理原DStream的每个元素,返回一个新的DStream flatMap(func) 与map相似,但是每个输入项可用被映射为0个或者