하나의 UserDetails와 다른 UserRoles 테이블이 있습니다. 다음과 같은 방법으로 매핑했습니다. 이 삽입 작업을 잘 갔다지만 사용자 개체에서 역할 목록을 얻으려고하면 예외가 throw됩니다. 내가 밝힌 바에 따르면, Hibernate에 의해 생성 된 SQL은 whare 절에서 User_id로 USERCODE 컬럼을 갖는다. 이 문제를 극복하는 방법. 도와주세요.테이블에 일대 다 관계가있는 경우 유창한 nhibernate로 잘못된 SQL이 생성됩니다.
사용자 클래스 :
public virtual string Code { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string MiddleName { get; set; }
.......
public virtual IList<UserRole> Roles { get; set; }
public virtual IList<UserResource> Resources { get; set; }
사용자 맵 :
Table("USER_DETAILS");
Schema("PROJECTDOCS");
Id(x => x.Code).Column("CODE").GeneratedBy.Assigned();
Map(x => x.FirstName).Column("FIRSTNAME").Not.Nullable().Length(100);
Map(x => x.LastName).Column("LASTNAME").Length(100).Not.Nullable();
Map(x => x.MiddleName).Column("MIDDLENAME").Length(100);
...
HasMany(x => x.Roles).Inverse().Cascade.All();
UserRole 등급 :
public virtual long UserRoleID { get; set; }
public virtual User UserCode { get; set; }
public virtual long RoleID { get; set; }
public virtual string CreatedBy { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual string UpdatedBy { get; set; }
public virtual DateTime UpdatedDate { get; set; }
UserRole지도 :
Table("USER_ROLES");
Schema("PROJECTDOCS");
Id(x => x.UserRoleID).Column("URID").GeneratedBy.Increment();
Map(x => x.RoleID).Column("ROLEID").Not.Nullable();
Map(x => x.CreatedBy).Column("CREATEDBY").Not.Nullable().Length(36);
Map(x => x.CreatedDate).Column("CREATEDDATE").Not.Nullable().Default(DateTime.Now.ToString());
Map(x => x.UpdatedBy).Column("UPDATEDBY").Not.Nullable().Length(36);
Map(x => x.UpdatedDate).Column("UPDATEDDATE").Not.Nullable().Default(DateTime.Now.ToString());
References(x => x.UserCode).Column("USERCODE");
최종 SQL 생성 0
이었다 :
[SQL은 : CREATEDBY2_0_, roles0_ 같은 User8_1_, roles0_.URID URID1_로서 roles0_.URID URID2_0_로서 roles0_.ROLEID ROLEID2_0_로서 roles0_.CREATEDBY로 roles0_.User_id을 선택한다. USERCODE2_0_로 CREATEDD4_2_0_, UPDATEDBY2_0_ 같은 roles0_.UPDATEDBY, UPDATEDD6_2_0_ 같은 roles0_.UPDATEDDATE, roles0_.USERCODE로 CREATEDDATE PROJECTDOCS.USER_ROLES roles0_ WHERE roles0_.User_id =?]
굵게 표시된 열 이름은 무엇을하려고 worng FROM . 사전에
감사합니다, 프라 딥 당신이 당신의에서는 UserClass에서 UserRoles에 hasMany의의 키 열을 누락 것 같습니다