如何将函数用作EclipseLink的类属性?

时间:2016-06-07 14:55:35

标签: java function lambda eclipselink

如果标题不明确,我很抱歉,我真的不知道如何让它更清晰。

基本上,我想创建一个Java类,其中一个属性是一个函数,我想用EclipseLink在数据库中保存这个类的实例(实际上,这个类将是&# 34;规则"计算一些学校标记,取决于作为该功能的参数给出的标准。)

我尝试使用lambda表达式,它一直很好用,直到我试图保留这个类的对象,这些对象没有用。这是我得到的那种错误:

[EL Severe]: ejb: 2016-06-07 16:43:19.288--ServerSession(640363654)--java.lang.ExceptionInInitializerError
Exception in thread "main" java.lang.ExceptionInInitializerError

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Deployment of PersistenceUnit [EvalComp_PUnit] failed. Close all factories for this PersistenceUnit.
Internal Exception: java.lang.ExceptionInInitializerError

这是我使用的代码:

public interface Calcul
{
    public abstract Double calcul(Object arg);
}

此外:

@Entity
public class Regle implements Serializable
{
    //---------------------------- Attributs -----------------------------------

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String libelle;

    private Calcul formule;
}

(我没有把吸气剂放在那里,我不认为他们在这里很有用。)

然后,我用来持久化类的方法:

public Regle creerRegle(String libelle, Calcul calcul) throws Throwable
    {
        Regle r = new Regle(libelle, calcul);

        Regle test = trouverRegleParLibelle(libelle);

        if (test == null)
        {
            try
            {
                JpaUtil.creerEntityManager();

                RegleDao dao = new RegleDao();

                JpaUtil.ouvrirTransaction();

                dao.create(r);

                JpaUtil.validerTransaction();

                JpaUtil.fermerEntityManager();

                return r;
            }
            catch(Exception e)
            {
                throw e;
            }
        }
        else
        {
            return null;
        }

(它基本上创建了一个EntityManager,启动了一个事务,持久化了对象,提交并关闭了事务。这是在这段代码中的所有函数中完成的,我不认为问题来自这里。 )

最后,在主要课程中:

Calcul test = (Object l) ->
{
    List<Boolean> li = (List<Boolean>) l;

    Double res = 20.;

    for (Boolean b : li)
    {
        if (res == 0.)
        {
            break;
        }
        else if (!b)
        {
            res--;
        }
    }

    return res;
};

r = servM.creerRegle(libelle, test);

你知道我能做些什么来解决这个问题吗?

谢谢,

LeChocDesGitans。

0 个答案:

没有答案