Results 1 to 4 of 4

Thread: Is it a bug of roo 1.0.2?

  1. #1
    Join Date
    Apr 2008
    Posts
    22

    Exclamation Is it a bug of roo 1.0.2?

    I have 4 entitys like this.
    Code:
    package com.yotexs.core.model.security;
     
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Table;
    import javax.persistence.UniqueConstraint;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
    import org.springframework.roo.addon.entity.RooEntity;
    import org.springframework.roo.addon.javabean.RooJavaBean;
    import org.springframework.roo.addon.tostring.RooToString;
    import java.util.Set;
    import com.yotexs.core.model.security.AclIdentity;
    import java.util.HashSet;
    import javax.persistence.OneToMany;
    import javax.persistence.CascadeType;
    import com.yotexs.core.model.security.AclEntry;
     
    @Entity
    @RooJavaBean
    @RooToString
    @RooEntity
    @Table(name = "sec_sid", uniqueConstraints = { @UniqueConstraint(columnNames = { "sid", "principal" }) })
    public class AclSid {
        /***/
        private static final long serialVersionUID = 1L;
     
        @NotNull
        @Size(max = 100)
        @Column(nullable = false, length = 100)
        private String            sid;
     
        @NotNull
        private boolean           principal;
     
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "ownerSid")
        private Set<AclIdentity>  objectIdentitys  = new HashSet<AclIdentity>();
     
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "grantedSid")
        private Set<AclEntry>     entries          = new HashSet<AclEntry>();
    }
    Code:
    package com.yotexs.core.model.security;
     
    import java.util.HashSet;
    import java.util.Set;
     
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    import javax.persistence.UniqueConstraint;
    import javax.validation.constraints.NotNull;
     
    import org.springframework.roo.addon.entity.RooEntity;
    import org.springframework.roo.addon.javabean.RooJavaBean;
    import org.springframework.roo.addon.tostring.RooToString;
     
    @Entity
    @RooJavaBean
    @RooToString
    @RooEntity
    @Table(name = "sec_class", uniqueConstraints = { @UniqueConstraint(columnNames = { "clasz" }) })
    public class AclClass {
        /***/
        private static final long serialVersionUID = 1L;
     
        @NotNull
        @Column(nullable = false)
        private String            clasz;
     
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "objectClasz", orphanRemoval = true)
        private Set<AclIdentity>  objectIdentitys  = new HashSet<AclIdentity>();
    }
    Code:
    package com.yotexs.core.model.security;
     
    import java.util.HashSet;
    import java.util.Set;
     
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToMany;
    import javax.persistence.OrderBy;
    import javax.persistence.Table;
    import javax.persistence.UniqueConstraint;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
     
    import org.springframework.roo.addon.entity.RooEntity;
    import org.springframework.roo.addon.javabean.RooJavaBean;
    import org.springframework.roo.addon.tostring.RooToString;
     
    @Entity
    @RooJavaBean
    @RooToString
    @RooEntity
    @Table(name = "sec_identity", uniqueConstraints = { @UniqueConstraint(columnNames = { "objectClasz", "objectId" }) })
    public class AclIdentity {
     
        /***/
        private static final long serialVersionUID = 1L;
     
        @NotNull
        @ManyToOne
        @JoinColumn(name = "objectClasz",nullable = false)
        private AclClass          objectClasz;
     
        @NotNull
        @Size(max = 32)
        @Column(nullable = false, length = 32)
        private String            objectId;
     
        @ManyToOne
        @JoinColumn
        private AclSid            ownerSid;
     
        @NotNull
        private boolean           entriesInheriting;
     
        @ManyToOne
        @JoinColumn
        private AclIdentity       parentObject;
     
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "parentObject")
        private Set<AclIdentity>  childrenObjects  = new HashSet<AclIdentity>();
     
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "objectIdentity")
        @OrderBy("entryOrder ASC")
        private Set<AclEntry>     entries          = new HashSet<AclEntry>();
     
    }
    Code:
    package com.yotexs.core.model.security;
     
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
    import javax.persistence.UniqueConstraint;
    import javax.validation.constraints.NotNull;
     
    import org.springframework.roo.addon.entity.RooEntity;
    import org.springframework.roo.addon.javabean.RooJavaBean;
    import org.springframework.roo.addon.tostring.RooToString;
     
    @Entity
    @RooJavaBean
    @RooToString
    @RooEntity
    @Table(name = "sec_entry", uniqueConstraints = { @UniqueConstraint(columnNames = { "objectIdentity", "entryOrder" }) })
    public class AclEntry {
        /***/
        private static final long serialVersionUID = 1L;
     
        @NotNull
        @Column(nullable = false)
        private int               mask;
     
        @NotNull
        private int               entryOrder;
     
        @NotNull
        @Column(nullable = false)
        private boolean           granting;
     
        @NotNull
        private boolean           auditSuccess;
     
        @NotNull
        private boolean           auditFailure;
     
        @NotNull
        @ManyToOne(optional = false)
        @JoinColumn(name = "objectIdentity")
        private AclIdentity       objectIdentity;
     
        @NotNull
        @ManyToOne(optional = false)
        @JoinColumn
        private AclSid            grantedSid;
    }
    When I execute "perform tests" on Roo Shell, tests always fail and throw below Error ,I'm newer for roo,any body help me !!,thxs
    Code:
    -------------------------------------------------------------------------------
    Test set: com.yotexs.core.model.security.AclIdentityIntegrationTest
    -------------------------------------------------------------------------------
    Tests run: 9, Failures: 0, Errors: 8, Skipped: 0, Time elapsed: 4.337 sec <<< FAILURE!
    testFlush(com.yotexs.core.model.security.AclIdentityIntegrationTest)  Time elapsed: 2.621 sec  <<< ERROR!
    javax.validation.ConstraintViolationException: validation failed for classes [com.yotexs.core.model.security.AclIdentity] during persist time for groups [javax.validation.groups.Default, ]
        at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:132)
        at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71)
        at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:159)
        at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:65)
        at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
        at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
        at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
     
    .......
    Last edited by bencmai; Mar 29th, 2010 at 01:22 PM.

  2. #2
    Join Date
    Jan 2008
    Posts
    182

    Default

    hibernate is validating your pojos against the database and finding that they don't match. You may want to change the hibernate.cfg.xml auto ddl from validate to create or update. Alternatively, if you are working from an existing database, then probably someone has modified the schema, or someone has tweaked the java objects.

  3. #3
    Join Date
    Apr 2008
    Posts
    22

    Default

    I'm woking from an existing database and these pojos is no modification copy from an original application.it worked fine.the problem is that when i migrate to roo, roo generate some tests code, this code can't be modified. next time start roo shell,it covers my changes to the generated code.if i comment like this:
    Code:
    @Entity
    @RooJavaBean
    @RooToString
    @RooEntity
    @Table(name = "sec_identity", uniqueConstraints = { @UniqueConstraint(columnNames = { "objectClasz", "objectId" }) })
    public class AclIdentity {
     
        /***/
        private static final long serialVersionUID = 1L;
        //but this property must to be non-nullable
        //@NotNull    
        @ManyToOne
        @JoinColumn(name = "objectClasz"/*,nullable = false*/)
        private AclClass          objectClasz;
    other code no change,everything goes well.
    also,if i don't use roo generated test code ,and write my own test code everything goes well too.
    I think of the problem is that roo generated test code has some mistake on initialize the test Entity.
    em!!,confusing..
    Last edited by bencmai; Apr 1st, 2010 at 12:12 PM.

  4. #4
    Join Date
    Mar 2011
    Posts
    1

    Default hi

    Did you solve this problem? I am loosing my hairs on same trouble

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •