Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA-无法访问多通关系中的非实体@mappedsuperclass_Jpa - Fatal编程技术网

JPA-无法访问多通关系中的非实体@mappedsuperclass

JPA-无法访问多通关系中的非实体@mappedsuperclass,jpa,Jpa,知道如何访问jpa中多通关系中的mappedsuper类吗。这是我的代码片段 Message是非实体映射的超类(没有用于Message的表) SystemMessage是一个实体类表名是SYSTEM\u MESSAGE//union子类 OrganizationMessage是一个实体类表名是ORGANIZATION\u MESSAGE//union子类 当我尝试从组织\u通知访问组织通知域对象时 组织通知表具有消息\u id列(消息)多通关系 它没有加载,抛出的消息不是实体。甚至我尝试了@en

知道如何访问jpa中多通关系中的mappedsuper类吗。这是我的代码片段

Message是非实体映射的超类(没有用于Message的表) SystemMessage是一个实体类表名是SYSTEM\u MESSAGE//union子类 OrganizationMessage是一个实体类表名是ORGANIZATION\u MESSAGE//union子类

当我尝试从组织\u通知访问组织通知域对象时 组织通知表具有消息\u 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;

}
@MappedSuperClass
@继承(策略=每个类的继承类型.TABLE_)
公共类消息扩展了BaseDomain实现
{
私有最终静态记录器日志=Logger.getLogger(Message.class);
@身份证
@列(name=“MESSAGE\u ID”)
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“MESSAGE\u PK\u SQ”)
@SequenceGenerator(name=“MESSAGE\u PK\u SQ”,sequenceName=“MESSAGE\u PK\u SQ”,allocationSize=1)
私人长id;
@列(name=“MESSAGE\u name”)
私有字符串名称;
}
@实体
@表(name=“系统消息”)
@继承(策略=InheritanceType.SINGLE_表)
公共类SystemMessage扩展消息
{
//一些可变变量
}
@实体
@表(name=“组织\信息”)
@继承(策略=InheritanceType.SINGLE_表)
公共类OrganizationMessage扩展消息
{
//一些可变变量
}
@抑制警告(“串行”)
@实体
@表(name=“组织机构通知”)
公共类OrganizationNotification扩展了BaseDomain实现
{
@身份证
@列(name=“组织通知ID”)
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“组织通知\主键\主键”)
@SequenceGenerator(name=“org\u notification\u pk\u sq”,sequenceName=“org\u notification\u pk\u sq”,allocationSize=1)
私人长id;
//问题就在这里。当我试图访问消息时,它会说它不是实体,否则,如果我在消息中使用实体而不保存,它就不会加载。
@多通(targetEntity=Message.class)
@JoinColumn(name=“MESSAGE\u ID”,insertable=true,updateable=true,nullable=false,referencedColumnName=“MESSAGE\u ID”)
私人信息;
}

关于这个问题,您能给我一些建议吗。

另一个实体与消息实例关联的事实证明,消息不能是MappedSuperclass,而必须是实体

@Entity
而不是
@MappedSuperclass
注释消息


MappedSuperclass用于继承实体中没有其他共同点的字段和/或关联。

谢谢!我又做了一个改变。我将消息具体类更改为抽象消息类。它现在运转良好。