3

私は次のものを持っています

package model.database;

import static javax.persistence.GenerationType.IDENTITY;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table( name = "DB_ACCOUNT_BILLING" )
public class AccountBilling implements Serializable
{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private long userId;
    private String firstName;
    private String lastName;
    private String username;
    private String password;

    public AccountBilling()
    {
    }

    @Id
    @GeneratedValue( strategy = IDENTITY )
    @Column( name = "USER_ID", unique = true, nullable = false )
    public long getUserId()
    {
        return userId;
    }

    public void setUserId( long userId )
    {
        this.userId = userId;
    }

    @Column( name = "FIRST_NAME", unique = false, nullable = false, length = 20 )
    public String getFirstName()
    {
        return firstName;
    }

    public void setFirstName( String firstName )
    {
        this.firstName = firstName;
    }

    @Column( name = "LAST_NAME", unique = false, nullable = false, length = 20 )
    public String getLastName()
    {
        return lastName;
    }

    public void setLastName( String lastName )
    {
        this.lastName = lastName;
    }

    @Column( name = "USERNAME", unique = true, nullable = false, length = 20 )
    public String getUsername()
    {
        return username;
    }

    public void setUsername( String username )
    {
        this.username = username;
    }

    @Column( name = "PASSWORD", unique = false, nullable = false, length = 20 )
    public String getPassword()
    {
        return password;
    }

    public void setPassword( String password )
    {
        this.password = password;
    }

}

ユーザー名をセカンダリ インデックスとして作成したいのですが、それを指定するためにどの Hibernate アノテーションを使用すればよいかわかりません。また、現在、プライマリ インデックスの検索では、次のようなことを行っています。

    session.beginTransaction();

    AccountBilling accountBilling = (AccountBilling) session.get( AccountBilling.class, (long) primaryIndex );

しかし、どうすれば二次索引検索を行うことができるでしょうか?

どんな助け/提案も大歓迎です。

4

1 に答える 1

1

Hibernate にインデックスを作成させるには、アノテーション... を使用しますIndex

userName で AccountBilling を取得するには、次のクエリを使用します。

String hql = "select a from AccountBilling a where a.userName = :userName";
AccountBilling result = session.createQuery(hql)
                               .setString("userName", userName)
                               .uniqueResult();
于 2013-01-07T22:32:17.763 に答える