support xml columns
This commit is contained in:
parent
2a766dc37f
commit
2d5c9df855
|
@ -7,7 +7,9 @@ import eu.eudat.data.converters.enums.DescriptionTemplateStatusConverter;
|
||||||
import eu.eudat.data.converters.enums.DescriptionTemplateVersionStatusConverter;
|
import eu.eudat.data.converters.enums.DescriptionTemplateVersionStatusConverter;
|
||||||
import eu.eudat.data.converters.enums.IsActiveConverter;
|
import eu.eudat.data.converters.enums.IsActiveConverter;
|
||||||
import eu.eudat.data.old.queryableentity.DataEntity;
|
import eu.eudat.data.old.queryableentity.DataEntity;
|
||||||
|
import eu.eudat.data.types.SQLXMLType;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
import org.hibernate.annotations.Type;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -26,7 +28,8 @@ public class DescriptionTemplateEntity implements DataEntity<DescriptionTemplate
|
||||||
public static final String _label = "label";
|
public static final String _label = "label";
|
||||||
public static final int _labelLength = 250;
|
public static final int _labelLength = 250;
|
||||||
|
|
||||||
@Column(name = "definition", nullable = false)
|
@Type(value = SQLXMLType.class)
|
||||||
|
@Column(name = "definition", nullable = false, columnDefinition = "xml")
|
||||||
private String definition;
|
private String definition;
|
||||||
public static final String _definition = "definition";
|
public static final String _definition = "definition";
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,85 @@
|
||||||
package eu.eudat.data.types;public class SQLXMLType {
|
package eu.eudat.data.types;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Types;
|
||||||
|
import org.hibernate.HibernateException;
|
||||||
|
import org.hibernate.engine.spi.SharedSessionContractImplementor;
|
||||||
|
import org.hibernate.usertype.UserType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store and retrieve a PostgreSQL "xml" column as a Java string.
|
||||||
|
* https://wiki.postgresql.org/wiki/Hibernate_XML_Type
|
||||||
|
*/
|
||||||
|
public class SQLXMLType implements UserType<String> {
|
||||||
|
|
||||||
|
private final int[] sqlTypesSupported = new int[] { Types.VARCHAR };
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSqlType() {
|
||||||
|
return Types.VARCHAR;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class returnedClass() {
|
||||||
|
return String.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(String x, String y) throws HibernateException {
|
||||||
|
if (x == null) {
|
||||||
|
return y == null;
|
||||||
|
} else {
|
||||||
|
return x.equals(y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode(String x) throws HibernateException {
|
||||||
|
return x == null ? null : x.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String nullSafeGet(ResultSet rs, int i, SharedSessionContractImplementor sharedSessionContractImplementor, Object o) throws SQLException {
|
||||||
|
String xmldoc = rs.getString( i );
|
||||||
|
return rs.wasNull() ? null : xmldoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void nullSafeSet(PreparedStatement st, String value, int index, SharedSessionContractImplementor sharedSessionContractImplementor) throws SQLException {
|
||||||
|
if (value == null) {
|
||||||
|
st.setNull(index, Types.OTHER);
|
||||||
|
} else {
|
||||||
|
st.setObject(index, value, Types.OTHER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String deepCopy(String value) throws HibernateException {
|
||||||
|
if (value == null)
|
||||||
|
return null;
|
||||||
|
return new String( (String)value );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMutable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Serializable disassemble(String value) throws HibernateException {
|
||||||
|
return (String) value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String assemble(Serializable cached, Object owner) throws HibernateException {
|
||||||
|
return (String) cached;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String replace(String original, String target, Object owner) throws HibernateException {
|
||||||
|
return original;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue