द्वारा पुनः सहेजा जाएगा, मेरे पास प्रोजेक्ट नीचे सेट अप है। मैं एक परियोजना को हटाने के लिए कोशिश कर रहा हूँ, और मैं निम्नलिखित मिल:grails हटाए गए ऑब्जेक्ट को कैस्केड त्रुटि
2010-09-29 11:45:22,902 [http-8080-1] ERROR errors.GrailsExceptionResolver - deleted object would be re-saved by cascade (remove deleted object from associatio
ns): [Project#204]
org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [Project#204]
at ProjectController$_closure6.doCall(ProjectController:50)
at ProjectController$_closure6.doCall(ProjectController)
at org.jsecurity.web.servlet.JSecurityFilter.doFilterInternal(JSecurityFilter.java:382)
at org.jsecurity.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:180)
at java.lang.Thread.run(Thread.java:619)
वहाँ किसी भी तरह से मुझे बताने की जो वस्तु संदर्भ वापस कि होगा पुन: सहेजना परियोजना वस्तु के लिए है हाइबरनेट करने के लिए है। मेरे प्रोजेक्ट के साथ क्या गलत है जो इस परिपत्र अपवाद का कारण बन रहा है?
public class Project implements Comparable
{
static belongsTo = [employee:Employee]
static hasMany = [roles:Role]
static constraints = {
}
static mapping = {
description type:"text"
roles lazy:false, cascade:"all,delete-orphan"
client lazy:false, cascade:"all,delete-orphan"
employer lazy:false, cascade:"all,delete-orphan"
}
}
class Employee implements Comparable
{
static hasMany = [employeeDesiredSkills:EmployeeDesiredSkill,
employeeDesiredTools:EmployeeDesiredTool,
employeeAreasOfExpertise:EmployeeAreaOfExpertise,
projects:Project,
education:Education]
static mapping = {
employeeDesiredSkills cascade:"all,delete-orphan", lazy:false
employeeDesiredTools cascade:"all,delete-orphan", lazy:false
education cascade:"all,delete-orphan", lazy:false
projects cascade:"all,delete-orphan", lazy:false
}
}
public class Role implements Comparable
{
static belongsTo = [project:Project]
static hasMany = [roleSkills:RoleSkill,roleTools:RoleTool]
static mapping = {
duties type:"text"
roleSkills cascade:"all,delete-orphan", lazy:false
roleTools cascade:"all,delete-orphan", lazy:false
locationType cascade:"all,delete-orphan", lazy:false
}
static contraints = {
endDate(nullable: true)
roleSkills(nullable: true)
roleTools(nullable: true)
}
}
class Employer implements Comparable
{
static mapping = {
type lazy:false, cascade:"all,delete-orphan"
}
}
class RoleTool implements Comparable
{
static belongsTo = [role:Role, tool:Tool]//not sure this makes sense, but have to leave it or DB breaks
Tool tool = new Tool(name:"")
static mapping = {
tool cascade:"save-update", lazy:false
}
class RoleSkill implements Comparable
{
static belongsTo = [role:Role, skill:Skill]//not sure this makes sense, but have to leave it or DB breaks
Skill skill = new Skill(name:"")
static mapping = {
skill cascade:"save-update", lazy:false
}
}
class Skill implements Comparable
{
static hasMany = [roleSkills:RoleSkill, employeeDesiredSkills:EmployeeDesiredSkill]
static mapping = {
roleSkills cascade:"all,delete-orphan", lazy:false
employeeDesiredSkills cascade:"all,delete-orphan", lazy:false
}
}
class Tool implements Comparable
{
static hasMany = [roleTools:RoleTool, employeeDesiredTools:EmployeeDesiredTool]
static mapping = {
roleTools cascade:"all,delete-orphan", lazy:false
employeeDesiredTools cascade:"all,delete-orphan", lazy:false
}
}
मुझे अंत में यह काम मिल गया। यह वास्तव में सरल नहीं है। मुझे लगता है कि अगर परियोजनाओं को सॉर्टेडसेट में संग्रहीत किया जाता है तो एक grails बग है, तो इसे हटाने में मुश्किल हो रही है। मुझे परियोजनाओं की प्रतिलिपि बनाना था, जिसे मैं हटाना चाहता था उसे हटा देना था, फिर इसे काम करने के लिए उन्हें वापस कर्मचारी में जोड़ें – Derek