我是JPA的新手。我在定义OneToOne双向流时遇到了麻烦。org.hibernate.MappingException:无法找到具有逻辑名称的列OnetoOne映射
UserInfo.java:
@Entity
@Table(name="UserInfo")
public class UserInfo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer idUserInfo;
private String firstName;
private String lastName;
@OneToOne(mappedBy="UserInfo")
private LoginInfo loginInfo;
LoginInfo.java:
@Entity
@Table(name="LoginInfo")
public class LoginInfo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer idLoginInfo;
@Column(name="emailId")
private String emailId;
//bidirectional one to one association to UserInfo
@OneToOne
@JoinColumn(name="emailId", referencedColumnName="loginInfo")
private UserInfo userInfo;
private String sessionId;
private String password;
下面的SQL创建这些表:
CREATE TABLE `LoginInfo` (
`emailId` varchar(45) NOT NULL,
`idLoginInfo` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`idLoginInfo`),
UNIQUE KEY `emailId_UNIQUE` (`emailId`),
UNIQUE KEY `id_UNIQUE` (`idLoginInfo`)
);
DROP TABLE IF EXISTS `UserInfo`;
CREATE TABLE `UserInfo` (
`idUserInfo` int(11) NOT NULL AUTO_INCREMENT,
`firstName` varchar(45) NOT NULL,
`lastName` varchar(45) NOT NULL,
`loginInfo` varchar(45) NOT NULL,
PRIMARY KEY (`idUserInfo`),
UNIQUE KEY `idUserInfo_UNIQUE` (`idUserInfo`),
UNIQUE KEY `loginInfo_UNIQUE` (`loginInfo`),
CONSTRAINT `loginInfo` FOREIGN KEY (`loginInfo`) REFERENCES `LoginInfo` (`emailId`) ON DELETE CASCADE ON UPDATE CASCADE
);
当我启动Tomcat服务器,我在ContextInitialization上获得以下例外。
Caused by: org.hibernate.MappingException: Unable to find column with logical name: loginInfo in org.hibernate.mapping.Table(UserInfo) and its related supertables and secondary tables
但是,该列确实存在于UserInfo表中。如果地图是正确的,有人可以帮助我吗?
由于