0
問題文:Country
は、State
とのコレクション関係を持っています。国家を取得して、それに関連するすべての州を取得する。多くの場合、望ましいことです。今の場合、私は国番号id
と状態id
を持っています。状態IDで国フィルタリングを取得すると、State
をCountry
に得ることは可能ですか?Java Hibernate Collection Mapping:特定のコレクション値をフィルタリングしない
Country.class
@Entity
@Repository
@Table(name="COUNTRY")
class Country implements Serializable{
@Id
@GeneratedValue(startegy=GenerationType.AUTO)
private long id;
@OneToMany(mappedBy="country", cascade={javax.persistence.CascadeType.ALL}, fetch=FetchType.EAGER)
private java.util.Set<State> states;
//Getters and setters
}
State.class
@Entity
@Repository
@Table(name="STATE")
class State implements Serializable{
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id", nullable=false, unique=true, updatable=true)
private long @Id
@ManyToOne
@JoinColumn(name="id")
private Country country;
//Getter and setter
}
私は次のクエリを試してみました:
//This query works great when used in SQL editor. Getting one state
select * from country left join state ON country.id = state.id and state.id=3
//Tried following
setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
は、SQLクエリと作成した基準を超える使用し、しかし、私は得るすべての州。またはこの問題は解決できますか?私たちはより良い選択肢を持っていますか?