JPQLのJPAのIN句で文字を使用するにはどうすればよいですか? たとえば、Oracle DBには次のクエリがあります。
select * from channel o where channel_mode IN ('O','R')
チャネル モードは、DB の char 列です。
JPQL からinvalid IN argument[o]
、文字であるというエラーが表示されます。
@クリスこれはJPQLです:
typeMasterList = em.createQuery("select object(o) from ChannelRequest as o where o.crqState IN ('O','R') and o.crqMode = 'B' ").getResultList();
エンティティ ChannelRequest は次のとおりです。
@Entity
@Table(name = "CHANNEL_REQUEST")
@XmlRootElement
public class ChannelRequest implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "CRQ_ID")
private Long crqId;
@Size(max = 100)
@Column(name = "CRQ_QUEUE")
private String crqQueue;
@Size(max = 160)
@Column(name = "CRQ_DATA")
private String crqData;
@Column(name = "CRQ_STATE")
private Character crqState;
@Column(name = "ACTIVE_FLAG")
private Short activeFlag;
@Column(name = "ENABLED")
private Short enabled;
@Size(max = 100)
@Column(name = "CRQ_ADDRESS")
private String crqAddress;
@Column(name = "CRQ_MODE")
private Character crqMode;
@Column(name = "DCO")
@Temporal(TemporalType.TIMESTAMP)
private Date dco;
@Column(name = "DLUO")
@Temporal(TemporalType.TIMESTAMP)
private Date dluo;
@OneToMany(mappedBy = "rpmrqCrId")
private Collection<RpmRequest> rpmRequestCollection;
@JoinColumn(name = "MM_ID", referencedColumnName = "MM_ID")
@ManyToOne
private MediumMaster mmId;
@JoinColumn(name = "MC_ID", referencedColumnName = "MC_ID")
@ManyToOne
private MediumChannel mcId;`enter code here`
これは私が得るエラーです:無効なIN式引数[O]、タイプ[java.lang.Character]の予想される引数