首先让我明确我的场景我正在使用 hibernate 4.3,带有 spring MVC 的 Postgresql 9.3,并且我使用 JBOSS 工具对类进行了逆向工程。
每次我使用 HQL 或 session.get() 选择数据时,我都会得到(SQL 查询工作正常) 原因:org.postgresql.util.PSQLException:int 类型的错误值:demoemailaddr@gmail.com
实体类,
申请人.java
@Entity
@Table(name = "applicant", schema = "public", uniqueConstraints = { @UniqueConstraint(columnNames = "user_id"), @UniqueConstraint(columnNames = "email"), @UniqueConstraint(columnNames = "registration_id") })
public class Applicant implements java.io.Serializable
{
@Id
@Column(name = "application_id", unique = true, nullable = false, length = 7)
private String applicationId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "email", unique = true, nullable = false)
private Users usersByEmail;
// setters and getters
}
和与上述类具有@ManytOne 关系的 Users 类。
@Entity
@Table(name = "users", schema = "public", uniqueConstraints = { @UniqueConstraint(columnNames = "email"), @UniqueConstraint(columnNames = "application_id") })
public class Users implements java.io.Serializable
{
@Id
@Column(name = "user_id", unique = true, nullable = false)
private int userId;
@Column(name = "email", unique = true, nullable = false, length = 100)
private String email;
}
现在检查模式结构
CREATE TABLE users
(
email character varying(100) NOT NULL,
user_id integer NOT NULL,
CONSTRAINT users_pk PRIMARY KEY (user_id),
CONSTRAINT unique_email UNIQUE (email)
)
CREATE TABLE applicant
(
application_id character(7) NOT NULL,
email character varying(100) NOT NULL,
CONSTRAINT users_email_fk FOREIGN KEY (email)
REFERENCES users (email) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT unique_applicant_email UNIQUE (email)
)
[已编辑] 我在用户表的电子邮件上使用连接列,它具有唯一约束但不是 PK(PK 是 user_id)
PS:我没权限改db schema结构
最佳答案
您需要将referencedColumnName
属性添加到@ManyToOne
关联:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "email", referencedColumnName = "email", unique = true, nullable = false)
private Users usersByEmail;
关于java - 非 PK 列的 Hibernate ManyToOne JOIN 抛出 "Bad value for type int",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262497/