环境: JDK 1.6,JEE5 Hibernate的核心3.3.1.GA,Hibernate注解3.4.0.GA DB:Informix的JPA实体 - org.hibernate.TypeMismatchException
使用逆向工程,创造我的坚持从数据库架构的实体[注:这是在工作模式我不能改变]
获取例外选择basic_auth_accounts org.hibernate.TypeMismatchException的列表时:提供了错误的类型类ebusiness.weblogic.model的ID。 UserAccounts。预计:类ebusiness.weblogic.model.UserAccountsId,得到了类ebusiness.weblogic.model.BasicAuthAccountsId
两个basic_auth_accounts和user_accounts具有复合主键和一个一对一的关系。 任何线索在这里做什么?这是非常重要的,我得到这个工作。在网络上找不到任何实质性的解决方案,有人说创建一个hibernate已经完成的ID类,有人说没有一对一的关系。
请帮助我!
/**
* BasicAuthAccounts generated by hbm2java
*/
@Entity
@Table(name = "basic_auth_accounts", schema = "ebusdevt", catalog = "ebusiness_dev", uniqueConstraints = @UniqueConstraint(columnNames = {
"realm_type_id", "realm_qualifier", "account_name" }))
public class BasicAuthAccounts implements java.io.Serializable {
private BasicAuthAccountsId id;
private UserAccounts userAccounts;
private String accountName;
private String hashedPassword;
private boolean passwdChangeReqd;
private String hashMethodId;
private int failedAttemptNo;
private Date failedAttemptDate;
private Date lastAccess;
public BasicAuthAccounts() {
}
public BasicAuthAccounts(UserAccounts userAccounts, String accountName, String hashedPassword,
boolean passwdChangeReqd, String hashMethodId, int failedAttemptNo) {
this.userAccounts = userAccounts;
this.accountName = accountName;
this.hashedPassword = hashedPassword;
this.passwdChangeReqd = passwdChangeReqd;
this.hashMethodId = hashMethodId;
this.failedAttemptNo = failedAttemptNo;
}
public BasicAuthAccounts(UserAccounts userAccounts, String accountName, String hashedPassword,
boolean passwdChangeReqd, String hashMethodId, int failedAttemptNo,
Date failedAttemptDate, Date lastAccess) {
this.userAccounts = userAccounts;
this.accountName = accountName;
this.hashedPassword = hashedPassword;
this.passwdChangeReqd = passwdChangeReqd;
this.hashMethodId = hashMethodId;
this.failedAttemptNo = failedAttemptNo;
this.failedAttemptDate = failedAttemptDate;
this.lastAccess = lastAccess;
}
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "realmTypeId", column = @Column(name = "realm_type_id", nullable = false, length = 32)),
@AttributeOverride(name = "realmQualifier", column = @Column(name = "realm_qualifier", nullable = false, length = 32)),
@AttributeOverride(name = "accountId", column = @Column(name = "account_id", nullable = false)) })
public BasicAuthAccountsId getId() {
return this.id;
}
public void setId(BasicAuthAccountsId id) {
this.id = id;
}
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
@NotNull
public UserAccounts getUserAccounts() {
return this.userAccounts;
}
public void setUserAccounts(UserAccounts userAccounts) {
this.userAccounts = userAccounts;
}
/**
* BasicAuthAccountsId generated by hbm2java
*/
@Embeddable
public class BasicAuthAccountsId implements java.io.Serializable {
private String realmTypeId;
private String realmQualifier;
private long accountId;
public BasicAuthAccountsId() {
}
public BasicAuthAccountsId(String realmTypeId, String realmQualifier, long accountId) {
this.realmTypeId = realmTypeId;
this.realmQualifier = realmQualifier;
this.accountId = accountId;
}
/**
* UserAccounts generated by hbm2java
*/
@Entity
@Table(name = "user_accounts", schema = "ebusdevt", catalog = "ebusiness_dev")
public class UserAccounts implements java.io.Serializable {
private UserAccountsId id;
private Realms realms;
private UserDetails userDetails;
private Integer accessLevel;
private String status;
private boolean isEdge;
private String role;
private boolean chargesAccess;
private Date createdTimestamp;
private Date lastStatusChangeTimestamp;
private BasicAuthAccounts basicAuthAccounts;
private Set<Sessions> sessionses = new HashSet<Sessions>(0);
private Set<AccountGroups> accountGroupses = new HashSet<AccountGroups>(0);
private Set<UserPrivileges> userPrivilegeses = new HashSet<UserPrivileges>(0);
public UserAccounts() {
}
public UserAccounts(UserAccountsId id, Realms realms, UserDetails userDetails, String status,
boolean isEdge, boolean chargesAccess) {
this.id = id;
this.realms = realms;
this.userDetails = userDetails;
this.status = status;
this.isEdge = isEdge;
this.chargesAccess = chargesAccess;
}
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "realmTypeId", column = @Column(name = "realm_type_id", nullable = false, length = 32)),
@AttributeOverride(name = "realmQualifier", column = @Column(name = "realm_qualifier", nullable = false, length = 32)),
@AttributeOverride(name = "accountId", column = @Column(name = "account_id", nullable = false)) })
@NotNull
public UserAccountsId getId() {
return this.id;
}
public void setId(UserAccountsId id) {
this.id = id;
}
@OneToOne(fetch = FetchType.LAZY, mappedBy = "userAccounts")
public BasicAuthAccounts getBasicAuthAccounts() {
return this.basicAuthAccounts;
}
public void setBasicAuthAccounts(BasicAuthAccounts basicAuthAccounts) {
this.basicAuthAccounts = basicAuthAccounts;
}
/**
* UserAccountsId generated by hbm2java
*/
@Embeddable
public class UserAccountsId implements java.io.Serializable {
private String realmTypeId;
private String realmQualifier;
private long accountId;
public UserAccountsId() {
}
public UserAccountsId(String realmTypeId, String realmQualifier, long accountId) {
this.realmTypeId = realmTypeId;
this.realmQualifier = realmQualifier;
this.accountId = accountId;
}
@Column(name = "realm_type_id", nullable = false, length = 32)
@NotNull
@Length(max = 32)
public String getRealmTypeId() {
return this.realmTypeId;
}
public void setRealmTypeId(String realmTypeId) {
this.realmTypeId = realmTypeId;
}
@Column(name = "realm_qualifier", nullable = false, length = 32)
@NotNull
@Length(max = 32)
public String getRealmQualifier() {
return this.realmQualifier;
}
public void setRealmQualifier(String realmQualifier) {
this.realmQualifier = realmQualifier;
}
@Column(name = "account_id", nullable = false)
public long getAccountId() {
return this.accountId;
}
public void setAccountId(long accountId) {
this.accountId = accountId;
}
主要规范类:
你有解决这个问题吗?我面临几乎相同的问题,但在我的情况下更糟糕,因为这两个表使用复合键中的这些列的不同名称。我正试图在两个实体之间做一个OneToOne关联。 – trafalmadorian 2011-01-07 04:39:09