hibernate annotations compile error

13,220

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

Share:
13,220
othman
Author by

othman

Updated on June 09, 2022

Comments

  • othman
    othman almost 2 years

    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
    
  • othman
    othman about 13 years
    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?
  • othman
    othman about 13 years
    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.
  • rogerdpack
    rogerdpack almost 13 years
    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
  • matt b
    matt b almost 13 years
    @rogerdpack, I don't think the JPA libraries ship with the JDK, unless that is a recent change.
  • rogerdpack
    rogerdpack almost 13 years
    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...
  • ᄂ ᄀ
    ᄂ ᄀ over 9 years
    @rogerdpack This is a bug in compiler - bugs.java.com/view_bug.do?bug_id=6550655