У меня есть проблема, связанная с тем, что объект JPA не сохраняется в базе данных, поэтому после добавления нового поля clob в объекте jpa - объект не сохраняется в базе данных, я использую websphere, spring 4.3.13 и Oracle11g
мой jpa-код до
import lombok.*;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.envers.Audited;
import javax.persistence.*;
import java.sql.Timestamp;
@Entity
@Audited
@Table(name = "UserRecord")
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@AllArgsConstructor
@Getter
@Setter
@Access(AccessType.FIELD)
public class UserRecord {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "PR_KEY")
private String prKey;
//Business Key
@Column(name = "businessId", length = 100, unique = false)
private String businessId;
//Business Key
@Column(name = "name", length = 100, nullable = false)
private String name;
//Business Key
@Column(name = "surname", length = 100, nullable = false)
private String surname;
@Column(name = "updateDateTime", length = 50, nullable = false)
private Timestamp updateDateTime;
@Version
private int version;
@Column(name = "user", length = 100000)
@Lob
private byte[] user;
public UserRecord(String businessId, String name, String surname, Timestamp updateDateTime, byte[] user) {
this.businessId = businessId;
this.name = name;
this.surname = surname;
this.updateDateTime = updateDateTime;
this.user = user;
}
}
и после
import lombok.*;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.envers.Audited;
import javax.persistence.*;
import java.sql.Timestamp;
@Entity
@Audited
@Table(name = "UserRecord")
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@AllArgsConstructor
@Getter
@Setter
@Access(AccessType.FIELD)
public class UserRecord {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "PR_KEY")
private String prKey;
//Business Key
@Column(name = "businessId", length = 100, unique = false)
private String businessId;
//Business Key
@Column(name = "name", length = 100, nullable = false)
private String name;
//Business Key
@Column(name = "surname", length = 100, nullable = false)
private String surname;
@Column(name = "updateDateTime", length = 50, nullable = false)
private Timestamp updateDateTime;
@Version
private int version;
@Column(name = "user", length = 100000)
@Lob
private byte[] user;
@Column(name = "userXml")
@Lob
private String userXml;
public UserRecord(String businessId, String name, String surname, Timestamp updateDateTime, byte[] user, String userXml) {
this.businessId = businessId;
this.name = name;
this.surname = surname;
this.updateDateTime = updateDateTime;
this.user = user;
this.userXml = userXml;
}
}
фрагмента кода слоя serice находится до
record = new RiskMetricRecord(businessId, name, surname, updateDateTimeTimestamp, serialize(userToSave));
после
record = new RiskMetricRecord(businessId, name, surname, updateDateTimeTimestamp, serialize(userToSave), userToSave);
Амой Jparepository:
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserRepository extends CrudRepository<UserRecord, String> {
}
Итак, когда я пытаюсь сохранить свою сущность в базе данных после добавления поля @Lob String в сущности JPA - сообщений об ошибках нет, но в базе данных тоже нет изменений..
Дополнительная информация: таблица базы данных:
-- auto-generated definition
CREATE TABLE USERRECORD
(
PR_KEY VARCHAR2(255 CHAR) NOT NULL
PRIMARY KEY,
BUSINESSID VARCHAR2(100 CHAR),
USER BLOB,
NAME VARCHAR2(100 CHAR) NOT NULL,
SURNAME VARCHAR2(100 CHAR) NOT NULL,
VERSION NUMBER(10) NOT NULL,
UPDATEDATETIME TIMESTAMP(3),
USERXML CLOB
)
/
Попытка: 1)
@Lob
@Column(name = "userXml", columnDefinition = "CLOB")
private String userXml;