环境:JDK1.6,JEE5 Hibernate Core 3.3.1.GA,Hibernate注释3.4.0.GADB:Informix
使用反向工程从db模式NB创建我的持久性实体:这是一个工作中的模式,我不能更改
在选择basic_auth_accounts org.hibernate.TypeMismatchException:为ebusiness.weblogic.model.UserAccounts类提供错误类型的id列表时获取异常。预期: ebusiness.weblogic.model.UserAccountsId类,got类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;
}
课程的主要守则是:
发布于 2010-05-18 20:48:00
只是为了跟进网上的搜索/研究:
从我所看到的情况来看,我有两个表basic_auth_accounts和user_accounts,它们使用相同的组合键realmTypeId、realmQualifier和accountId。这两个实体都有具有这些列和一对一关系的可嵌入类。
我使用hibernate工具从DB模式生成这些实体,这是我无法更改的!
我想知道我是否对两个实体使用相同的可嵌入类,比如将BasicAuthAccountsId重命名为一个更通用的名称,删除UserAccountsId,对于两个实体是否使用相同的@EmbeddedId类?
https://stackoverflow.com/questions/2854749
复制相似问题