Hi, 
I have a problem with JPA and (cascade={CascadeType.ALL}, orphan Removal=real). I have a project that can have some comments and some configurations. The configurations can has some comments, too.
- If I add a comment to the project which has a configuration, then I got the followed error.
- If I add a comment to the project that has no configurations, then it works well.
- If I add a comment to a configuration, that works also well.
- If I remove (cascade={CascadeType.ALL}, orphanRemoval=true) from the private List ; on the Configuration.java Entity, then all scenarios works well without errors. But, I have a Comment corps in the DataBase, if I delete some configurations.
I can't see the problem, how it does not work with cascade.
ErrorMessage:
	Developer Console:
Type: DSRequest
DS or appID: project_DataSource
Operation: Update
Component: isc_DynamicForm
Status: -10
DSRequest
	Response Raw
	
	
	
	
	
	
							
						
					I have a problem with JPA and (cascade={CascadeType.ALL}, orphan Removal=real). I have a project that can have some comments and some configurations. The configurations can has some comments, too.
- If I add a comment to the project which has a configuration, then I got the followed error.
- If I add a comment to the project that has no configurations, then it works well.
- If I add a comment to a configuration, that works also well.
- If I remove (cascade={CascadeType.ALL}, orphanRemoval=true) from the private List ; on the Configuration.java Entity, then all scenarios works well without errors. But, I have a Comment corps in the DataBase, if I delete some configurations.
I can't see the problem, how it does not work with cascade.
ErrorMessage:
Code:
	
	=== 2012-06-28 20:12:35,843 [l0-6] WARN DataSource - [builtinApplication.project_DataSource_update] Couldn't set property 'comment' for datasource 'project_DataSource'. Actual error: javax.persistence.PersistenceException: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: com.detection.smiths.eapcfg.server.persistence.Cfg.comment === 2012-06-28 20:12:35,851 [l0-6] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2012-06-28 20:12:35,852 [l0-6] DEBUG JPADataSource - Committing transaction for 1 queued operation(s). === 2012-06-28 20:12:35,852 [l0-6] ERROR JPADataSource - Failed to commit transaction. Rolling back. javax.persistence.RollbackException: Transaction marked as rollbackOnly
Type: DSRequest
DS or appID: project_DataSource
Operation: Update
Component: isc_DynamicForm
Status: -10
DSRequest
Code:
	
	{
    "dataSource":"project_DataSource", 
    "operationType":"update", 
    "componentId":"isc_DynamicForm_1", 
    "data":{
        "cfg":[
            {
                "comment":[
                ], 
                "todo":"CFG"
            }
        ], 
        "comment":[
            {
                "comment":"12121212"
            }
        ], 
        "projectName":"NEW PROJECT",
        "status":"OPEN"
    }, 
    "callback":{
        "target":[DynamicForm ID:isc_DynamicForm_1], 
        "methodName":"saveEditorReply"
    }, 
    "showPrompt":true, 
    "prompt":"Saving form...", 
    "oldValues":{
        "cfg":[
            {
                "comment":[
                ], 
                "todo":"CFG"
            }
        ], 
        "comment":[
            {
                "comment":"12121212"
            }
        ], 
        "projectName":"NEW PROJECT", 
        "status":"OPEN"
    }, 
    "clientContext":{
    }, 
    "requestId":"project_DataSource$6277"
}
Code:
	
	[
    {
        data:{
            cfg:[
                {
                    comment:[
                    ], 
                    todo:"CFG"
                }
            ], 
            comment:[
            ], 
            projectName:"NEW PROJECT", 
            status:"OPEN"
        }, 
        invalidateCache:false, 
        isDSResponse:true, 
        operationType:"update", 
        queueStatus:-1, 
        status:-10
    }
]
Code:
	
	@Entity
@Table (name="Cfg")
public class Cfg  implements Serializable{
    @Id
    @Column 
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private Long cfgId;
    @Column  (nullable = false)
    private String todo; 
   
    @OneToMany(cascade={CascadeType.ALL}, orphanRemoval=true)  
    @JoinColumn(name="cfgCommentId", referencedColumnName="cfgId")   
    private List<Comment> comment;
...
}
Code:
	
	@Entity
@Table (name="Project")
public class Project  implements Serializable{
    @Id
    @Column 
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private Long nodeId;
    @Column  (nullable = false)
    private String projectName; 
   
    @OneToMany(cascade={CascadeType.ALL}, orphanRemoval=true)  
    @JoinColumn(name="projectCommentId", referencedColumnName="nodeId")   
    private List<Comment> comment;  
...
}
Code:
	
	@Entity
@Table (name="Comment")
public class Comment  implements Serializable{
    @Id
    @Column 
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private Long commentId;
    @Column  
    private String comment="";
    @Column  
    private Boolean ok;
    
    public Comment (){
    }
...
}
Code:
	
	<DataSource
    ID="project_DataSource"
    serverConstructor="com.isomorphic.jpa.JPADataSource"
    beanClassName="com.detection.smiths.eapcfg.server.persistence.Project"
    >
    <fields>
        ...
        <field name="comment"   type="comment_DataSource" foreignKey="comment_DataSource.commentId" multiple="true" title="Kommentar" required="false"/>
        <field name="cfg"   type="cfg_DataSource" foreignKey="cfg_DataSource.cfgId" multiple="true" title="Cfg" required="false"/>
              
                
    </fields>
Code:
	
	<DataSource
    ID="cfg_DataSource"
    serverConstructor="com.isomorphic.jpa.JPADataSource"
    beanClassName="com.detection.smiths.eapcfg.server.persistence.Cfg"
    >
    <fields>
...
        <field name="comment"   type="comment_DataSource" foreignKey="comment_DataSource.commentId" multiple="true" title="Kommentar" required="false"/>
     	
    </fields>
</DataSource>