JPA - Невозможно получить доступ к не-сущности @mappedsuperclass во многих отношениях - PullRequest
1 голос
/ 14 марта 2012

Любая идея о том, как получить доступ к классу mappedsuper в многотонном режиме связи в jpa. вот мой фрагмент кода.

Сообщение - это суперкласс, не связанный с сущностью (нет таблицы для сообщения) SystemMessage является именем таблицы класса сущности SYSTEM_MESSAGE // подкласс объединения OrganizationMessage - это имя таблицы класса сущности ORGANIZATION_MESSAGE // подкласс объединения

Когда я пытаюсь получить доступ к объекту домена уведомлений организации из ORGANIZATION_NOTIFICATION В таблице уведомлений организации есть столбец message_id (Сообщение), отношение ко многим.

Это не загрузка, и выброшенное сообщение не является сущностью. даже я попробовал @entity вместо @mappedsuperclass, но он не загружает сообщение. я должен получить доступ как к системному сообщению, так и к сообщению организации через уведомление организации

@MappedSuperClass
@Inheritance( strategy = InheritanceType.TABLE_PER_CLASS )
public class Message extends BaseDomain implements Comparable<Message>
{
  private final static Logger log = Logger.getLogger( Message.class );

  @Id
  @Column( name = "MESSAGE_ID" )
  @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "MESSAGE_PK_SQ" )
  @SequenceGenerator( name = "MESSAGE_PK_SQ", sequenceName = "MESSAGE_PK_SQ",       allocationSize = 1 )

  private Long id;
  @Column(name="MESSAGE_NAME")
  private String name;
}

@Entity
@Table( name = "SYSTEM_MESSAGE" )
@Inheritance( strategy = InheritanceType.SINGLE_TABLE )
public class SystemMessage extends Message
{
//some persitant variables
}


@Entity
@Table( name = "ORGANIZATION_MESSAGE" )
@Inheritance( strategy = InheritanceType.SINGLE_TABLE )
public class OrganizationMessage extends Message
{
//some persitant variables
}


@SuppressWarnings( "serial" )
@Entity
@Table( name = "ORGANIZATION_NOTIFICATION" )
public class OrganizationNotification extends BaseDomain implements Comparable<OrganizationNotification>
{
@Id
  @Column( name = "ORGANIZATION_NOTIFICATION_ID" )
  @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "org_notification_pk_sq" )
  @SequenceGenerator( name = "org_notification_pk_sq", sequenceName = "org_notification_pk_sq", allocationSize = 1 )
  private Long id;


 //Here is the issue. when i try to access message it says it is not entity otherwise it is not loading if i use entity in message and not saving. 
 @ManyToOne( targetEntity = Message.class )
  @JoinColumn( name = "MESSAGE_ID", insertable = true, updatable = true, nullable = false,referencedColumnName="MESSAGE_ID" )
  private Message message;

}

Не могли бы вы дать мне какие-либо предложения по этому вопросу.

1 Ответ

3 голосов
/ 14 марта 2012

Тот факт, что другие объекты имеют связь с экземплярами Message, доказывает, что Message должен быть не MappedSuperclass, а Entity.

Сообщение аннотации с @Entity вместо @MappedSuperclass.

MappedSuperclass используется для наследования полей и / или ассоциаций в сущностях, которые не имеют ничего общего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...