Can you also post your entire Entity?

Thanks,
Rick

On Wed, Nov 3, 2010 at 11:55 AM, Alex, Huang <[email protected]> wrote:

> Hi Rick,
>
> Log:
> ===================START==================================================
> 188  JPATEST  INFO   [main] openjpa.Runtime - Starting OpenJPA 2.0.1
> 3094  JPATEST  TRACE  [main] openjpa.jdbc.SQL - <t 30466761, conn 14220570>
> executing prepstmnt 23932998 SELECT t0.uid, t0.age, t0.name FROM t_user t0
> 3094  JPATEST  TRACE  [main] openjpa.jdbc.SQL - <t 30466761, conn 14220570>
> [0 ms] spent
> ===================END====================================================
>
> Thanks in advance.
> Alex,Huang
>
> ----- Original Message -----
> From: "Rick Curtis" <[email protected]>
> To: <[email protected]>
> Sent: Wednesday, November 03, 2010 11:21 PM
> Subject: Re: Can't obtain Primary Key value by JPQL
>
>
> > Can you post the SQL trace from when you execute your query?
> >
> > Thanks,
> > Rick
> >
> > On Wed, Nov 3, 2010 at 3:51 AM, Alex, Huang <[email protected]>
> wrote:
> >
> >> Hi everybody,
> >>
> >> I am using openJPA2.0.1 + Mysql5.1.
> >>
> >> Table definition like below,
> >> ===============DML START=======================
> >> CREATE TABLE t_user (
> >>  uid int(10) unsigned NOT NULL AUTO_INCREMENT,
> >>  name varchar(255) DEFAULT NULL,
> >>  age int(11) NOT NULL,
> >>  PRIMARY KEY (uid)
> >> ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
> >> ===============DML END=========================
> >>
> >> entity,
> >> ==========Entity START=========================
> >> @Entity
> >> @Table(name="t_user")
> >> public class TUser implements Serializable {
> >>  private static final long serialVersionUID = 1L;
> >>
> >>  @Id
> >>  @GeneratedValue(strategy=GenerationType.IDENTITY)
> >>  @Column(insertable=false)
> >>  private int uid;
> >>
> >>  private int age;
> >>
> >>  private String name;
> >>  ......getter and setter.....
> >> ==========Entity END===========================
> >>
> >> ==========persistence.xml START===========================
> >> ................
> >>  <class>entity.TUser</class>
> >>  <properties>
> >>   <property name="openjpa.jdbc.DBDictionary" value="mysql"/>
> >>   <property name="javax.persistence.jdbc.driver"
> >> value="com.mysql.jdbc.Driver"/>
> >>   <property name="javax.persistence.jdbc.url"
> >> value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8"/>
> >>   <property name="javax.persistence.jdbc.user" value="root"/>
> >>   <property name="javax.persistence.jdbc.password" value="xxxxxx"/>
> >>   <property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO,
> >> Tool=INFO, SQL=TRACE"/>
> >>  </properties>
> >>
> >> ==========persistence.xml END=============================
> >>
> >>
> >> I run a JPQL like below,
> >>
> >> Query query = em.createQuery("SELECT user FROM TUSER user");
> >>
> >> For the result, I can get each field's value except primary key field.
> In
> >> this case, each entity's uid field is zero.
> >>
> >> I tried to trace the source code and I found the following code in
> >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager from LINE 1085.
> >>
> >>        // load unloaded fields
> >>        FieldMapping[] fms = mapping.getDefinedFieldMappings();
> >>        Object eres, processed;
> >>        for (int i = 0; i < fms.length; i++) {
> >>            if (fms[i].isPrimaryKey() ||
> >> sm.getLoaded().get(fms[i].getIndex()))
> >>                continue;
> >>
> >> It seemed that if the a field is primary key so no value would be passed
> >> to
> >> it. Would someone tell me why?  Did I miss any setting?
> >>
> >> Thanks and best regards,
> >> Alex, Huang
> >>
> >>
> >>
> >
>
>
>

Reply via email to