2016-04-17 12 views
0

最近GORMについては、初めて使用しているので、オブジェクト間の関係や保存時に問題が発生するため、多くのことを尋ねています。 だから、これは一つのクラスである:GORMはhasManyエンティティを保存していません

class TesterUser { 

@Id 
private String id 

private String userId 

static belongsTo = Dashboard 

static constraints = { 
    userId nullable: true 
} 

static mapping = { 
    id column: 'id', generator: 'assigned' 
} 

public String getUserId() { 
    return userId; 
} 
public void setUserId(String userId) { 
    this.userId = userId; 
} 
public String getId() { 
    return id; 
} 
public void setId(String id) { 
    this.id = id; 
} 
} 

そして、これが他のクラスである:

クラスTestingClass {

@Id 
private String id 

private Date created 
private Date modified 

private String title 

private ClassName className 

static hasMany = [testUsers : TesterUser, sheets : Sheet] 
static belongsTo = ClassName 

static constraints = { 
    modified nullable: true 
    title nullable: true 
    className nullable: true 
} 

static mapping = { 
    sheets column:'testingClassId',joinTable: false 
    testUsers column:'testingClassId',joinTable: false 
    id column: 'id', generator: 'assigned' 
    title column: "title", length: 90000 
} 

public Date getCreated() { 
    return created; 
} 
public void setCreated(Date created) { 
    this.created = created; 
} 
public Date getModified() { 
    return modified; 
} 
public void setModified(Date modified) { 
    this.modified = modified; 
} 

public String getTitle() { 
    return title; 
} 
public void setTitle(String title) { 
    this.title = title; 
} 

public DavUser getClassName() { 
    return className; 
} 
public void setClassName(ClassName className) { 
    this.className = className; 
} 
public Date getDeleted() { 
    return deleted; 
} 
public String getId() { 
    return id; 
} 
public void setId(String id) { 
    this.id = id; 
} 
} 

私はすでにDB内のオブジェクトを保存したが、今は設定したいですそれらの間の関係、私が電話して保存したときには機能していません:

TesterUser testU = TesterUser.findById(uId) 
TestingClass testC = TestingClass.findById(cId) 
if(testU != null && testC != null){ 
amountOfRelations++ 
testC.addToDashboardUsers(testU) 
if(!dtestC.save(flush:true, failOnError: true)){ 
amountOfUnsaved++ 
} 
else{ 
amountOfsaved++ 
} 

なんらかの理由で、私はエラーを受け取りません。だけでなく、私はクエリが私のDBに行くことがわかりますが、何も起こりません。更新やエラーはありません。 なぜ動作しないのかわかりません。

+0

前のDBをフラッシュして、アプリケーションを再起動する必要があります。 –

+0

「TestingClass.dashboardUsers」はどこですか? 'TestingClass'には、' testUsers'と 'sheets'という2つの* many * associationsがあります。したがって、あなたは 'testC.addToTestUsers(testU)'を実行する必要があります。 –

答えて

0

最終的に私はエンティティを保存できませんでした。 私の「解決策」は、最初にaddToメソッドを使用してエンティティを保存することでした。 私はまだそれがうまくいかなかったのか、私のエンティティを保存するために何をする必要があるのか​​分かりませんが、まだ解決策があります。

+0

私は同じ問題があります。これまでの考えは? –

関連する問題