Когда я пытаюсь сохранить свою сущность, я получаю следующее исключение: Исключение в потоке "main" javax.persistence.PersistenceException: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.7.3.v20180807-4be1041): org.eclipse.persistence.exceptions.EntityManagerSetupException
Исключения времени выполнения:
Исключение Описание: Сбой развертывания PersistenceUnit [h2].Закройте все фабрики для этого PersistenceUnit.
Внутреннее исключение: исключение [EclipseLink-0] (Eclipse Persistence Services - 2.7.3.v20180807-4be1041): org.eclipse.persistence.exceptions.IntegrityException Exception [EclipseLink-7198] (Eclipse Persistence Services - 2.7.3.v20180807-4be1041): org.eclipse.persistence.exceptions.ValidationException Descriptor Исключения:
Исключение Описание: Класс: [uuid] не был найден при преобразовании имен классов вклассы.
Внутреннее исключение: java.lang.ClassNotFoundException: uuid
Сущность
@Entity
@UuidGenerator(name = "uuid")
@Converter(name = "uuidConverter", converterClass = UUIDConverter.class)
@Table(name = "ELECTRIC_METERS")
@NamedQuery(name = "ElectricMeters.findElectricMetersByNote",
query = "SELECT e FROM ElectricMeters e WHERE e.note = :note")
public class ElectricMeters implements Serializable{
@Id
@GeneratedValue(generator = "uuid", strategy = IDENTITY)
@Convert("uuidConverter")
@Column (name = "ID")
private UUID id;
@Column(name = "ADD_YARD_LIGHTING")
private boolean addYardLighting;
@Column(name = "NOTE")
private String note;
public ElectricMeters() {
}
//getters setters
}
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="h2" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<!-- Converter -->
<class>com.art.forestbucha.util.UUIDConverter</class>
<class>com.art.forestbucha.entity.ElectricMeters</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:file://home/artem/NetBeansProjects/ForestBuchaBackEnd/src/main/resources/db/bucha"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
</properties>
</persistence-unit>
</persistence>
Конвертер
import java.util.UUID;
import org.eclipse.persistence.internal.helper.DatabaseField;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.DirectCollectionMapping;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.sessions.Session;
public class UUIDConverter implements Converter{
@Override
public Object convertObjectValueToDataValue(Object objectValue,
Session session) {
return (UUID) objectValue;
}
@Override
public UUID convertDataValueToObjectValue(Object dataValue,
Session session) {
return (UUID) dataValue;
}
@Override
public boolean isMutable() {
return true;
}
@Override
public void initialize(DatabaseMapping mapping, Session session) {
final DatabaseField field;
if (mapping instanceof DirectCollectionMapping) {
// handle @ElementCollection...
field = ((DirectCollectionMapping) mapping).getDirectField();
} else {
field = mapping.getField();
}
field.setSqlType(java.sql.Types.OTHER);
field.setTypeName("uuid");
field.setColumnDefinition("UUID");
}
}
создать базу данных:
CREATE TABLE PUBLIC.ELECTRIC_METERS
(ID UUID NOT NULL PRIMARY KEY,
ADD_YARD_LIGHTING BOOLEAN DEFAULT false NOT NULL,
NOTE VARCHAR(255));