1

次の簡単な例があります。

@Entity
public class Profile {
 @Id
 private long id;

 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
 @JoinColumn(name="profileId", nullable = false)
 private List<Preference> preferences;
}

@Entity
@IdClass(PreferenceId.class)
public class Preference1 {
  @Id
  private long id;
  @Id
  @Column(insertable = false, updatable = false, nullable = false)
  private long profileId;   
}

プロファイルを永続化しようとすると、常に次の 2 つの挿入ステートメントがあります。

プロファイル (id) 値 (?) に挿入 -- 完璧

Preference(profileId, id) 値 (?, ?) に挿入 -- これも完璧

その後

16:21:12,257 TRACE BasicBinder:83 - binding parameter [1] as [BIGINT] - 1
16:21:12,257 TRACE BasicBinder:83 - binding parameter [2] as [BIGINT] - 10
16:21:12,257 TRACE BasicBinder:83 - binding parameter [3] as [BIGINT] - 0
16:21:12,257 ERROR SqlExceptionHelper:144 - Invalid column index

パラメータが 2 つではなく 3 つあるのはなぜですか?

4

1 に答える 1

0
public class PreferenceId implements Serializable {
    private long id;
    private long profileId;
    public PreferenceId(){}

    public long getId(){return id;}
    public void setId(long id){this.id = id;}
    public long getProfileId() {return profileId;}
    public void setProfileId(long profileId) {this.profileId = profileId;}
    //hashCode, equals
}
于 2013-02-17T11:46:07.090 に答える