当前位置: 首页 > 知识库问答 >
问题:

由于复合主键导致的NetBeans-GlassFish服务器部署错误

百里渊
2023-03-14

在将Netbeans项目部署到Glassfish服务器时,我目前遇到了一个构建失败的错误。我从日志中得到以下错误:

异常描述:实体类[class entity.InstrumentExtref]中带注释的元素[field instrument]上的@JoinColumns不完整。当源实体类使用复合主键时,必须使用@JoinColumns为每个联接列指定@JoinColumn。name和referencedColumnName元素都必须在每个@JoinColumn中指定。有关更多详细信息,请参阅server.log。

@EmbeddedId
protected InstrumentExtRefPK instrumentExtRefPK;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 16)
@Column(name = "reference")
private String reference;
@JoinColumn(name = "instrument_code_type", referencedColumnName = "code_type", insertable = false, updatable = false)
@ManyToOne(optional = false)
private InstrumentCodeType instrumentCodeType1;
@JoinColumn(name = "instrument_id", referencedColumnName = "id", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Instrument instrument;
@Embeddable
public class InstrumentExtRefPK implements Serializable {
@Basic(optional = false)
@NotNull
@Column(name = "instrument_id")
private int instrumentId;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 10)
@Column(name = "instrument_code_type")
private String instrumentCodeType;

类InstrumentCodeType引用表instrument_code_type,该表具有主键code_type(被引用的列)。Instrument类引用表Instrument,该表本身具有由列“id”(引用的列)和列“exchange_exchange_code”组成的复合主键。

从错误消息中可以明显看出,InstrumentExtRef实体中的复合主键是问题所在,但根据我对其他类似(但不完全相同)问题的研究,我认为我的实体类看起来不错。但我对此相对陌生,可能遗漏了一些东西。

共有1个答案

陆建木
2023-03-14

在对实体类中复合键的创建/使用做了更多的研究之后,我在收到的错误消息中看到了一个微妙的点。

“必须使用@joincolumn*s*为每个联接列指定...”。我没有使用@JoinColumns注释。或者至少Netbeans没有以这种方式创建实体类。可能是因为每个联接列来自不同的源实体/表。

在如下更正我的实体类之后,项目能够成功地部署。

    @JoinColumns({
    @JoinColumn(name = "instrument_code_type", referencedColumnName = "code_type",    insertable = false, updatable = false),
    @JoinColumn(name = "instrument_id", referencedColumnName = "id", insertable = false, updatable = false)})
private InstrumentCodeType instrumentCodeType1;
private Instrument instrument;

我怀疑我的下一个问题将与复合主键由来自两个不同实体的列组成--instrument和InstrumentCodeType。但是现在,上面的更改让我克服了构建问题,如果下一个问题出现,我将单独处理它。

 类似资料:
  • 在使用Netbeans 8.2使用Glassfish 4.1部署web应用程序时,我遇到以下错误 启动GlassFish Server 4.1.1 GlassFish Server 4.1.1启动失败 请检查服务器管理员用户名和密码属性。 还请检查服务器日志文件以查找其他可能的原因。/users/suraaz/testapp/nbproject/build-impl.xml:1046:部署错误:G

  • 和ejb-war 我不知道为什么GlassFish服务器,部署,空,假,因为,我花了我3天时间找到解决方案,我已经用MySQL创建了连接池。我使用的是NetBeans7.4和GlassFish4.0。希望建议。

  • 我的glassFish服务器有问题。当我部署项目时,他们会向我显示以下消息: 构建impl。xml:1045:尚未部署该模块。 我一直在重新启动netbeans,并将debugmode更改为TRUE,但问题仍然存在。 这是build impl生产的1045线。xml: 我使用: macOS塞拉利昂10.12 NetBeans 8.2 GlassFish 4.1.1 JDK 8

  • 每当我从Netbeans运行我的项目时,都会出现以下错误: 以下是日志输出:

  • 目前我面临一个问题。好的,让我分享一下。 我已经将这个项目部署到服务器中,它工作正常,所有操作都成功。但是突然它在登录时基本上得到了。当我下载日志时,它会显示。当我再次重新启动我的服务器时,它再次顺利工作。但我认为这需要一个永久的解决方案。我也喜欢分享日志的完整跟踪。 技术:python3.6

  • 我在Netbeans中构建了一个Java EE项目,就像他们的AffableBean教程一样,当我试图在远程glassfish服务器上部署WAR时,不会创建在glassFish-resources.xml中定义的db资源(连接池和jdbc资源)。 我在本地硬盘上查看项目的“build”目录,但在任何地方都看不到glassfish-resources.xml文件。(应该在那里吧?) 我看到了如何以编