use of org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter in project hibernate-orm by hibernate.
the class ExplicitDateConvertersTest method testSimpleConvertUsage.
@Test
public void testSimpleConvertUsage() throws MalformedURLException {
final EntityPersister ep = sessionFactory().getEntityPersister(Entity1.class.getName());
final Type theDatePropertyType = ep.getPropertyType("theDate");
final AttributeConverterTypeAdapter type = assertTyping(AttributeConverterTypeAdapter.class, theDatePropertyType);
assertTyping(LongToDateConverter.class, type.getAttributeConverter());
resetFlags();
Session session = openSession();
session.getTransaction().begin();
session.persist(new Entity1(1, "1", new Date()));
session.getTransaction().commit();
session.close();
assertTrue(convertToDatabaseColumnCalled);
resetFlags();
session = openSession();
session.getTransaction().begin();
session.get(Entity1.class, 1);
session.getTransaction().commit();
session.close();
assertTrue(convertToEntityAttributeCalled);
session = openSession();
session.getTransaction().begin();
session.createQuery("delete Entity1").executeUpdate();
session.getTransaction().commit();
session.close();
}
use of org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter in project hibernate-orm by hibernate.
the class SimpleConvertsAnnotationTest method testSimpleConvertsUsage.
@Test
public void testSimpleConvertsUsage() throws MalformedURLException {
final EntityPersister ep = sessionFactory().getEntityPersister(Entity1.class.getName());
final Type websitePropertyType = ep.getPropertyType("website");
final AttributeConverterTypeAdapter type = assertTyping(AttributeConverterTypeAdapter.class, websitePropertyType);
assertTyping(UrlConverter.class, type.getAttributeConverter());
resetFlags();
Session session = openSession();
session.getTransaction().begin();
session.persist(new Entity1(1, "1", new URL("http://hibernate.org")));
session.getTransaction().commit();
session.close();
assertTrue(convertToDatabaseColumnCalled);
session = openSession();
session.getTransaction().begin();
session.createQuery("delete Entity1").executeUpdate();
session.getTransaction().commit();
session.close();
}
use of org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter in project hibernate-orm by hibernate.
the class JavaConstantNode method getRenderText.
@Override
@SuppressWarnings("unchecked")
public String getRenderText(SessionFactoryImplementor sessionFactory) {
final Type type = expectedType == null ? heuristicType : Number.class.isAssignableFrom(heuristicType.getReturnedClass()) ? heuristicType : expectedType;
try {
if (LiteralType.class.isInstance(type)) {
final LiteralType literalType = (LiteralType) type;
final Dialect dialect = factory.getDialect();
return literalType.objectToSQLString(constantValue, dialect);
} else if (AttributeConverterTypeAdapter.class.isInstance(type)) {
final AttributeConverterTypeAdapter converterType = (AttributeConverterTypeAdapter) type;
if (!converterType.getModelType().isInstance(constantValue)) {
throw new QueryException(String.format(Locale.ENGLISH, "Recognized query constant expression [%s] was not resolved to type [%s] expected by defined AttributeConverter [%s]", constantExpression, constantValue.getClass().getName(), converterType.getModelType().getName()));
}
final Object value = converterType.getAttributeConverter().convertToDatabaseColumn(constantValue);
if (String.class.equals(converterType.getJdbcType())) {
return "'" + value + "'";
} else {
return value.toString();
}
} else {
throw new QueryException(String.format(Locale.ENGLISH, "Unrecognized Hibernate Type for handling query constant (%s); expecting LiteralType implementation or AttributeConverter", constantExpression));
}
} catch (QueryException e) {
throw e;
} catch (Exception t) {
throw new QueryException(QueryTranslator.ERROR_CANNOT_FORMAT_LITERAL + constantExpression, t);
}
}
Aggregations