[jboss-user] [EJB 3.0] - BUG: Composite Primary Key
lihuoming
do-not-reply at jboss.com
Thu Apr 12 09:29:40 EDT 2007
I'm running Jboss4.2.0
Composite Primary Key Class:
package com.foshanshop.ejb3.bean;
| import java.io.Serializable;
| import javax.persistence.Column;
| import javax.persistence.Embeddable;
|
| @SuppressWarnings("serial")
| @Embeddable
| public class AirtLinePK implements Serializable {
| private String leavecity;
| private String arrivecity;
|
| public AirtLinePK(){}
|
| public AirtLinePK(String leavecity, String arrivecity) {
| this.leavecity = leavecity;
| this.arrivecity = arrivecity;
| }
|
| @Column(nullable=false,length=3,name="LEAVECITY")
| public String getLeavecity() {
| return leavecity;
| }
| public void setLeavecity(String leavecity) {
| this.leavecity = leavecity;
| }
|
| @Column(nullable=false,length=3,name="ARRIVECITY")
| public String getArrivecity() {
| return arrivecity;
| }
| public void setArrivecity(String arrivecity) {
| this.arrivecity = arrivecity;
| }
|
| public boolean equals(Object o) {
| if (this == o) return true;
| if (!(o instanceof AirtLinePK)) return false;
|
| final AirtLinePK airtLinePK = (AirtLinePK) o;
|
| if (!leavecity.equals(airtLinePK.getLeavecity())) return false;
| if (!arrivecity.equals(airtLinePK.getArrivecity())) return false;
| return true;
|
| }
| public int hashCode() {
| int result;
| result = leavecity.hashCode();
| result = 29 * result + arrivecity.hashCode();
| return result;
| }
| }
package com.foshanshop.ejb3.bean;
| import java.io.Serializable;
| import java.util.HashSet;
| import java.util.Set;
| import javax.persistence.CascadeType;
| import javax.persistence.EmbeddedId;
| import javax.persistence.Entity;
| import javax.persistence.FetchType;
| import javax.persistence.OneToMany;
| import javax.persistence.OrderBy;
| import javax.persistence.Table;
|
| @SuppressWarnings("serial")
| @Entity
| @Table(name = "AirLine")
| public class AirLine implements Serializable {
|
| private AirtLinePK id;
| private Boolean onoff;
|
| public AirLine(){}
|
| public AirLine(AirtLinePK id, Boolean onoff){
| this.id = id;
| this.onoff = onoff;
| }
|
| @EmbeddedId
| public AirtLinePK getId() {
| return id;
| }
| public void setId(AirtLinePK id) {
| this.id = id;
| }
|
| public Boolean getOnoff() {
| return onoff;
| }
|
| public void setOnoff(Boolean onoff) {
| this.onoff = onoff;
| }
| }
Session bean:
package com.foshanshop.ejb3.impl;
| import javax.ejb.Remote;
| import javax.ejb.Stateless;
| import javax.persistence.EntityManager;
| import javax.persistence.PersistenceContext;
| import javax.persistence.Query;
| import com.foshanshop.ejb3.AirLineDAO;
| import com.foshanshop.ejb3.bean.AirLine;
| import com.foshanshop.ejb3.bean.AirtLinePK;
|
| @Stateless
| @Remote ({AirLineDAO.class})
| public class AirLineDAOBean implements AirLineDAO {
| @PersistenceContext
| protected EntityManager em;
|
| public Long getAirLineTotal() {
| Query query = em.createQuery("select count(a) from AirLine a where a.id.leavecity =?1 and a.id.arrivecity=?2");
| query.setParameter(1, "PEK");
| query.setParameter(2, "CAN");
| return query.getSingleResult();
| }
| }
Jboss Log print Error:
anonymous wrote : 2007-04-12 21:03:24,031 DEBUG [org.hibernate.util.JDBCExceptionReporter] could not execute query [select count((airline0_.LEAVECITY, airline0_.ARRIVECITY)) as col_0_0_ from AirLine airline0_ where airline0_.LEAVECITY=? and airline0_.ARRIVECITY=?]
| java.sql.SQLException: Operand should contain 1 column(s)
| at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
| at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
| at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
| at com.mysql.jdbc.Connection.execSQL(Connection.java:3004)
| at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1128)
| at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1222)
above code run in Toplink, it work fine
I am using following code in jboss,it work fine:
Query query = em.createQuery("select count(a.id.leavecity) from AirLine a where a.id.leavecity =?1 and a.id.arrivecity=?2");
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4036712#4036712
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4036712
More information about the jboss-user
mailing list