Tag: usertype

当UserType表示单行中的对象集时。 如何使用类似标准查询Hibernate自定义UserType?

我们使用自定义Hibernate UserType将一组字符串存储在一行中。 当尝试使用类似标准查询此集合时,使用JPA CriteriaBuilder Hibernate会抛出IllegalArgumentException Parameter value String did not match expected type java.util.Set 这有解决方法吗? 这是我们正在使用的UserType: public class SetStringType implements UserType, LiteralType<Set> { final private static String SEPARATOR = “|”; final private static String SEPARATOR_REGEXP = “\\|”; @Override public int[] sqlTypes() { return new int[] { Types.VARCHAR }; } @Override public Object nullSafeGet(ResultSet rs, String[] […]

来自多个数据库的Hibernate实体

我们的数据模型在两个数据库中分为模式。 这些模式是隔离使用的,除了在两者之间桥接的一些单键关系。 没有跨两个数据库的写入事务。 与此问题类似, 使用Hibernate在不同数据库中进行2个表的连接 ,我们希望使用Hibernate来处理连接实体。 我们不能使用数据库解决方案(DB2上的联合视图)。 我们已经使用两个独立的数据库配置(Doctor和Patient)设置了Hibernate,这在使用DAO显式访问特定会话时非常有效。 当我们调用DoctorBO.getExam().getPatient()时,我们希望使用Hibernate自动检索实体DoctorBO.getExam().getPatient()其中,检查包含指向另一个数据库上Patient表的id。 我尝试这样做的一种方法是使用自定义UserType: public class DistributedUserType implements UserType, ParameterizedType { public static final String CLASS = “CLASS”; public static final String SESSION = “SESSION”; private Class returnedClass; private String session; /** {@inheritDoc} */ @Override public int[] sqlTypes() { // The column will only be the id return new […]

如何使用Hibernate映射MySQL DATE’EMA’&TIME ’00:00:00′

首先,您需要将“zeroDateTimeBehavior = convertToNull”添加到db connection url的末尾 – 在读取记录时将零日期转换为空。 其次,您需要将字段映射到自定义UserType,如下所示: @Column(name = “start_date”) @Type(type = “com.my.dao.support.hibernate.MySqlDateUserType”) public Date getStartDate() { return startDate; } @Column(name = “start_time”) @Type(type = “com.my.dao.support.hibernate.MySqlTimeUserType”) public Time getStartTime() { return startTime; } 请注意,该字段应映射为可选字段。 最后,两个class级,第一个是DATE,第二个是TIME。 测试了Hibernate 3.6,MySQL 5.1,5.5。 MySqlDateUserType package com.th.dao.support.hibernate; import org.hibernate.HibernateException; import org.hibernate.usertype.UserType; import java.io.Serializable; import java.sql.*; /** * Allows save MySql […]

Hibernate自定义UserType无法正常工作

我已经创建了一个UserType(见下文)来处理我们的mySQL数据库中的情况,我们一直在保存null date作为0000-00-00 00:00:00。 当我尝试使用null为dispDT持久保存我的实体时(见下文),它会生成此exception:“javax.persistence.PersistenceException:org.hibernate.PropertyValueException:not-null属性引用null或transient值:myEntity.dispDt” 通过在MySQLTimeStampUserType中的每个方法中设置断点,我可以看到它调用deepCopy方法并且从不调用nullSafeSet方法。 我认为nuyllSafeSet方法的重点是允许我在持久化之前操纵该值。 我究竟做错了什么? 实体注释 @Basic(optional = false) @Column(name = “disp_dt”) @Type(type = “mypackage.MySQLTimeStampUserType”) // @Temporal(TemporalType.TIMESTAMP) private Date dispDt; 用户类型类 public class MySQLTimeStampUserType implements UserType { private static final int[] SQL_TYPES = {Types.TIMESTAMP}; public int[] sqlTypes() { return SQL_TYPES; } public Class returnedClass() { return Date.class; } public boolean equals(Object x, Object […]

为什么Hibernate会忽略package-info.java?

我正在尝试在包级别上使用Hibernate @TypeDef注释,就像在Hibernate文档中描述的那样。 我正在使用Hibernate 3.6和Spring 3.0.7 。 代码编译, package-info.class在类路径中,但Hibernate看不到它。 如果我把@TypeDef放在类级别上,它可以工作,但是如果我输入package-info则不行。 我试图谷歌但找不到任何有用的东西。 谢谢!