我实际上是在尝试使用带有 java 注释的 Hibernate ORM 进行映射。我将 PostgreSQL 用于我的数据库及其 UUID 类型。正如我在其他帖子中看到的那样,当我想将 UUID pgsql 类型映射到 UUID Java 类型时,我应该将 @Type(type="pg-uuid") 添加到每个 UUID 字段。问题是当我得到这个时,它似乎没有被休眠识别:
org.hibernate.MappingException:无法确定类型:pg-uuid,在表:ev_session,列:[org.hibernate.mapping.Column(user_id)]
我在谷歌上找不到任何提到这一点的东西,所以我真的不知道应该去哪里看。
这是我的映射类。该表使用两个 UUID 作为主键,这就是为什么我必须创建一个嵌套类来表示它。我不确定我做对了。
@Entity
@Table(name="ev_session")
public class SessionDb {
////////////////////////
// VARIABLES
////////////////
@Id
private PrimaryKey primaryKey;
@Column(name="date")
private Date timestamp;
////////////////////////
// NESTED CLASSES
////////////////
@Embeddable
private class PrimaryKey implements Serializable {
private static final long serialVersionUID = 7124577164356450734L;
@Type(type="pg-uuid")
@Column(name="user_id")
public UUID userID;
@Type(type="pg-uuid")
@Column(name="key")
public UUID token;
}
////////////////////////
// CONSTRUCTORS
////////////////
public SessionDb() {
this.primaryKey = new PrimaryKey();
}
////////////////////////
// METHODS
////////////////
@Override
public String toString() {
return this.primaryKey.token + " associated to " + this.primaryKey.userID + " at " + this.timestamp;
}
////////////////////////
// GETTERS/SETTERS
////////////////
public final UUID getUserID() {
return this.primaryKey.userID;
}
public final void setUserID(UUID userID) {
this.primaryKey.userID = userID;
}
public final UUID getToken() {
return this.primaryKey.token;
}
public final void setToken(UUID token) {
this.primaryKey.token = token;
}
public final Date getTimestamp() {
return timestamp;
}
public final void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
}
谢谢你的帮助