0
我有一個JBoss上託管工作的Java EE應用程序。它使用EclipseLink來管理Postgres數據庫中的數據。我現在將實體類移動到單獨的jar中,以便它們可以被其他組件共享。這樣做後,Postgres給出以下錯誤:移動的EclipseLink實體到單獨的jar
ERROR: operator does not exist: uuid = bytea at character 209
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
它看起來像我的轉換器類沒有被調用。這裏是我的轉換器類的樣子:
package model.util;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.sessions.Session;
import java.sql.Types;
import java.util.UUID;
public class PgUuidConverter
implements Converter
{
@Override
public boolean isMutable()
{
return false;
}
@Override
public Object convertDataValueToObjectValue (Object value, Session session)
{
return (UUID) value;
}
@Override
public Object convertObjectValueToDataValue (Object value, Session session)
{
return (UUID) value;
}
@Override
public void initialize (DatabaseMapping mapping, Session session)
{
mapping.getField().setSqlType (Types.OTHER);
}
}
這裏是我如何使用它在我的實體:
package model;
import model.util.PgUuidConverter;
import org.eclipse.persistence.annotations.Convert;
import org.eclipse.persistence.annotations.Converter;
import java.util.UUID;
import javax.persistence.*;
@Entity
@Table (
name = "item",
schema = "main"
)
@Converter (
name = "uuid",
converterClass = PgUuidConverter.class
)
public class Item
{
public Item() {}
@Id
@Column (
name = "item_id",
unique = true,
nullable = false
)
private UUID itemId;
@Column (name = "layer_id")
@Convert ("uuid")
private UUID layerId;
public UUID getItemId()
{
return this.itemId;
}
public UUID getLayerId()
{
return this.layerId;
}
public void setItemId (UUID itemId)
{
this.itemId = itemId;
}
public void setLayerId (UUID layerId)
{
this.layerId = layerId;
}
}
是否有某種配置的我失蹤?
奇怪的是,這會停止工作,並且您對layerId的轉換器,但不是你的itemId。那是什麼導致了錯誤的SQL?打開EclipseLink的日誌記錄,以最優秀的和工作日誌進行比較的不工作的情況下,如在部署過程中一些警告可能表明缺少什麼。 – Chris
我加入轉爐到的itemId,我停下得到錯誤。當我最初在不使用實體類的情況下在單獨的jar中實現此代碼時,只有在將UUID字段輸入NULL時才需要轉換器。因此,我只將轉換器應用於可空的UUID字段。看起來EclispeLink現在需要在所有UUID字段中使用轉換器。 –