gpt4 book ai didi

java - EclipseLink 的@UuidGenerator 导致 NullPointerException

转载 作者:行者123 更新时间:2023-11-30 07:04:45 25 4
gpt4 key购买 nike

我已经尝试开始使用 EclipseLink 的 @UuidGenerator annonation 来生成 ID,但由于 NPE 而失败。

我使用的是 Java EE 6 + GlassFish 4.1。实体是从 servlet 创建的。 EclipseLink 版本为 2.6.0-M3。简单的长 ID“@GeneratedValue(strategy = GenerationType.AUTO)”工作正常。

实体代码:

@Entity
@UuidGenerator(name="QUANTITY_GEN")
public class Quantity implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "QUANTITY_GEN")
private String id;

...

}

Servlet 代码:

@WebServlet(name = "Qtest", urlPatterns =
{
"/Qtest"
})
public class Qtest extends HttpServlet
{
@EJB
private QuantityFacade quantityFacade;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
...

Quantity qt = new Quantity();
quantityFacade.create(qt);

...
}
}

跟踪:

Caused by: java.lang.NullPointerException
at org.eclipse.persistence.internal.sequencing.SequencingManager.getNextValue(SequencingManager.java:1067)
at org.eclipse.persistence.internal.sequencing.ClientSessionSequencing.getNextValue(ClientSessionSequencing.java:70)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.assignSequenceNumber(ObjectBuilder.java:361)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.assignSequenceNumber(ObjectBuilder.java:320)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.assignSequenceNumber(UnitOfWorkImpl.java:486)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist(UnitOfWorkImpl.java:4290)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist(RepeatableWriteUnitOfWork.java:518)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4235)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:496)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:287)
at uuidtest.AbstractFacade.create(AbstractFacade.java:24)

请指教是否有明显的错误?

最佳答案

这似乎真的是 EclipseLink 的错误,而且很难很快修复,所以我使用了一种变通方法 - 此处描述的直接 ID 生成 http://blog.xebia.com/2009/06/03/jpa-implementation-patterns-using-uuids-as-primary-keys/

@Id
private String id;

public AbstractBaseEntity() {
this.id = UUID.randomUUID().toString();
}

关于java - EclipseLink 的@UuidGenerator 导致 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27348803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com