7

I'm encountering a strange problem when i try to compile a DTO file which has hibernate annotations to map to db . when fails with a strange message log below. what could be the cause of this problem? i suppose the error comes from file CashDTO . what am i doing wrong in file CashDTO.java?

    import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Version;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

    /**
     * @author othmanelmoulat
     * 
     */
    @Entity
    @TableGenerator(name = "cash_GEN", table = "jbilling_seqs", pkColumnName = "name", valueColumnName = "next_id", pkColumnValue = "cash", allocationSize = 100)
    @Table(name = "cash")
    public class CashDTO implements Serializable {
        int id;
        BigDecimal amount;
        Date date;
        int versionNum;

        public CashDTO() {
            super();
            // TODO Auto-generated constructor stub
        }

        public CashDTO(int id) {
            super();
            this.id = id;
        }

        public CashDTO(int id, BigDecimal amount, Date date) {
            super();
            this.id = id;
            this.amount = amount;
            this.date = date;
        }

        public CashDTO(int id, BigDecimal amount, Date date, int versionNum) {
            super();
            this.id = id;
            this.amount = amount;
            this.date = date;
            this.versionNum = versionNum;
        }

        @Id
        @GeneratedValue(strategy = GenerationType.TABLE, generator = "cash_GEN")
        @Column(name = "id", unique = true, nullable = false)
        public int getId() {
            return this.id;
        }

        public void setId(int id) {
            this.id = id;
        }
        @Column(name = "amount", nullable = false)
        public BigDecimal getAmount() {
            return amount;
        }

        public void setAmount(BigDecimal amount) {
            this.amount = amount;
        }
        @Column(name = "date", nullable = false)
        public Date getDate() {
            return date;
        }

        public void setDate(Date date) {
            this.date = date;
        }
        @Version
        @Column(name = "OPTLOCK")
        public int getVersionNum() {
            return versionNum;
        }

        public void setVersionNum(int versionNum) {
            this.versionNum = versionNum;
        }

    }

Error log:

Buildfile: /Users/othmanelmoulat/Documents/workspace/jbilling/src/build.xml

init:
   [delete] Deleting directory /Users/othmanelmoulat/Documents/workspace/jbilling/src/build/test-results
    [mkdir] Created dir: /Users/othmanelmoulat/Documents/workspace/jbilling/src/build/test-results

compile_api:
    [javac] /Users/othmanelmoulat/Documents/workspace/jbilling/src/build.xml:272: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

findRevision:

jar_api:
      [jar] Building jar: /Users/othmanelmoulat/Documents/workspace/jbilling/src/build/deploy/jbilling_api.jar

test-ws:
    [javac] /Users/othmanelmoulat/Documents/workspace/jbilling/src/build.xml:457: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 7 source files to /Users/othmanelmoulat/Documents/workspace/jbilling/src/build/test
    [javac] com/sapienter/jbilling/server/user/db/CashDTO.class(com/sapienter/jbilling/server/user/db:CashDTO.class): warning: Cannot find annotation method 'name()' in type 'javax.persistence.TableGenerator': class file for javax.persistence.TableGenerator not found
    [javac] com/sapienter/jbilling/server/user/db/CashDTO.class(com/sapienter/jbilling/server/user/db:CashDTO.class): warning: Cannot find annotation method 'table()' in type 'javax.persistence.TableGenerator'
    [javac] com/sapienter/jbilling/server/user/db/CashDTO.class(com/sapienter/jbilling/server/user/db:CashDTO.class): warning: Cannot find annotation method 'pkColumnName()' in type 'javax.persistence.TableGenerator'
    [javac] com/sapienter/jbilling/server/user/db/CashDTO.class(com/sapienter/jbilling/server/user/db:CashDTO.class): warning: Cannot find annotation method 'valueColumnName()' in type 'javax.persistence.TableGenerator'
    [javac] com/sapienter/jbilling/server/user/db/CashDTO.class(com/sapienter/jbilling/server/user/db:CashDTO.class): warning: Cannot find annotation method 'pkColumnValue()' in type 'javax.persistence.TableGenerator'
    [javac] com/sapienter/jbilling/server/user/db/CashDTO.class(com/sapienter/jbilling/server/user/db:CashDTO.class): warning: Cannot find annotation method 'allocationSize()' in type 'javax.persistence.TableGenerator'
    [javac] com/sapienter/jbilling/server/user/db/CashDTO.class(com/sapienter/jbilling/server/user/db:CashDTO.class): warning: Cannot find annotation method 'name()' in type 'javax.persistence.Table': class file for javax.persistence.Table not found
    [javac] com/sapienter/jbilling/server/user/db/CashDTO.class(com/sapienter/jbilling/server/user/db:CashDTO.class): warning: Cannot find annotation method 'strategy()' in type 'javax.persistence.GeneratedValue': class file for javax.persistence.GeneratedValue not found
    [javac] An exception has occurred in the compiler (1.6.0_24). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport)  after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report.  Thank you.
    [javac] com.sun.tools.javac.code.Symbol$CompletionFailure: class file for javax.persistence.GenerationType not found

BUILD FAILED
/Users/othmanelmoulat/Documents/workspace/jbilling/src/build.xml:457: Compile failed; see the compiler error output for details.

Total time: 5 seconds
1

1 Answer 1

5

Sounds like the classes for javax.persistence are not on the classpath of the javac task in your test-ws Ant target.

Sign up to request clarification or add additional context in comments.

6 Comments

hmm strange! before i added class CashDTO the test-ws was running successfully and CashDTO is not different from other old DTOs in my code. why only class CashDTO that complains about it and not other DTO classes very similar to CashDTO?
sorry you right. i shouldn't use hibernate annotated DTOs in my test-ws . i have to create another DTO to use with test-ws.
But why doesn't javac have them by default in its classpath, that's my question? javac itself is nestled within the JDK c:\Program Files (x86)\Java\jdk1.6.0_26\bin\javac.exe so shouldn't it find them? (for followers, here was my fix for it: betterlogic.com/roger/2011/07/javachibernate-woe comment 1
@rogerdpack, I don't think the JPA libraries ship with the JDK, unless that is a recent change.
That makes sense. For some reason I thought they did but I guess they only do with Netbeans/J2EE or something like that. So my next question is whether getting them from hibernate is the best place or not...it's surprising that something that's javax.xxx doesn't ship with the JDK tho...
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.