2

Totalsというモデルがあります

@Entity
public class Totals extends Model{
@EmbeddedId
private TotalsPK id;
public Totals(TotalsPK key, Integer _count)
{
    id = key;
    count = _count;
}

public static Finder<TotalsPK,Totals> find = new Finder<TotalsPK, Totals> (
        TotalsPK.class, Totals.class
);

public static Totals find(TotalsPK id) 
 {
    //try this way instead of relying on find.byId working..... same error though!
    return find.where().eq("user_id", id.getUserId()).eq("item_id", id.getItemId()).findUnique();
//  return find.byId(id);
 }
........... etc

そして、私は私のキークラスを持っています

@Embeddable
public class TotalsPK {

private Long userId;
private Long itemId;

public TotalsPK(Long _userId, Long _itemId)
{
    userId = _userId;
    itemId = _itemId;
}

public boolean equals(Object rhs)
{
    return (userId.equals(((TotalsPK)rhs).getUserId()) && itemId.equals(((TotalsPK)rhs).getItemId()));
}

public int hashCode()
{
    //from Effective Java Chapter 3
    int result = (int) (userId ^ (userId >>> 32));
    result = 31 * result + (int) (itemId ^ (itemId >>> 32));
    return result;  
}

これは、存在しないレコードを検索する場合は正常に機能しますが、存在するレコードを検索する場合、Ebean から "equals" に渡されたオブジェクトが null であり、なぜこれが間違っているのかわかりません。

equals に渡された rhs 値を Null チェックすると、クラッシュは停止しますが、equals チェックはヒットしません。

ありがとう

4

0 に答える 0