-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: JPA entities -- org.hibernate.TypeMismatchException
PostPosted: Mon May 17, 2010 8:21 pm 
Newbie

Joined: Mon May 17, 2010 8:06 pm
Posts: 5
Environment:
JDK 1.6, JEE5
Hibernate Core 3.3.1.GA, Hibernate Annotations 3.4.0.GA
DB:Informix

Used reverse engineering to create my persistence entities from db schema [NB:This is a schema in work i cannot change]

Getting exception when selecting list of basic_auth_accounts org.hibernate.TypeMismatchException: Provided id of the wrong type for class ebusiness.weblogic.model.UserAccounts. Expected: class ebusiness.weblogic.model.UserAccountsId, got class ebusiness.weblogic.model.BasicAuthAccountsId

Both basic_auth_accounts and user_accounts have composite primary keys and one-to-one relationships.
Main Code for classes are:

Code:
/**
* 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;
    }


Any clues what to do here? This is pretty important that i get this to work. Cannot find any substantial solution on the net, some say to create an ID class which hibernate has done, and some say not to have a one-to-one relationship.

Please help me!!


Top
 Profile  
 
 Post subject: Re: JPA entities -- org.hibernate.TypeMismatchException
PostPosted: Wed May 19, 2010 12:49 am 
Newbie

Joined: Mon May 17, 2010 8:06 pm
Posts: 5
just to follow up on looking/researching online:

From what i can see i have two tables basic_auth_accounts and user_accounts that use the same composite keys realmTypeId, realmQualifier and accountId.
Both entities have embeddable classes with these columns and one-to-one relationships.

I used hibernate tools to generate these entities from the DB schema which i cant change!

Im wondering if i used the same embeddable class for both entities, as in rename BasicAuthAccountsId to a more generic name, remove UserAccountsId and for both entities use the same @EmbeddedId class?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.