我有一个多对一的关系,我想要可以为空:
@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;
Run Code Online (Sandbox Code Playgroud)
不幸的是,JPA将我的数据库中的列设置为NOT NULL.有谁能解释一下?有没有办法让它发挥作用?请注意,我使用JBoss 7,JPA 2.0和Hibernate作为持久性提供程序和PostgreSQL 9.1数据库.
编辑:
我找到了问题的原因.显然,这是由于我在引用实体中定义主键的方式Customer:
@Entity
@Table
public class Customer {
@Id
@GeneratedValue
@Column(columnDefinition="serial")
private int id;
}
Run Code Online (Sandbox Code Playgroud)
看来,使用@Column(columnDefinition="serial")主键会自动将引用它的外键设置到NOT NULL数据库中.将列类型指定为时,这确实是预期的行为serial吗?在这种情况下,是否有解决方案来启用可为空的外键?
先感谢您.
在JBoss中,部署阶段的顺序如何?对象被实例化并可以使用的顺序是什么?考虑企业应用程序(*.ear),检查所有部署日志(server.log),部署阶段如下所示:
问题:
standalone.xmlor中配置的domain.xml,当发生第一次连接到DB池时?当我注入PersistenceContext并使用EntityManager?当.war模块已部署并准备就绪时,即使尚未完成.ear的完全部署,也可能从容器启动servlet或侦听器.
在JBoss AS 5中,我在*-ds.xml中定义了一个数据源,但是将用户名/加密密码放在*-jboss-beans.xml中.
现在在JBoss AS 7.1中,数据源在standalone.xml或domain.xml中定义.我在哪里将加密密码放在AS 7.1中?
换句话说,如何在AS 7中加密和保护明确的密码?
我得到的错误,当我尝试上传正是基于关闭此处显示的实例文件 示例
错误是
为servlet com.testapp.rest.JaxRsActivator分配异常:java.lang.RuntimeException:无法找到类org.jboss.resteasy.core.AsynchronousDispatcher的公共构造函数
这意味着什么?

我Keycloak (version 1.0.4.Final)在JBOSS AS 7.1.1服务器中使用.服务器位于Amazon AWS上.
我能用keycloak启动jboss服务器.我可以在点击URL时看到keycloak默认屏幕 - ServerIP:8080/auth
但是当我点击Administration Console链接进入登录界面时.我正在翻页说 - HTTPS required
服务器在AWS上,更改为"ssl-required" : "none",
General Adapter Config没有帮助.
如何解决这个问题?
编辑:我没有在keycloak-1.2.0.Beta1版本中遇到此问题.
我在独立模式下运行jboss并将数据源设置standalone.xml为以下内容:
<datasource jndi-name="MyDenaliDS" pool-name="MyDenaliDs_Pool" enabled="true" jta="true"
use-java-context="true" use-ccm="true">
<connection-url>
jdbc:sqlserver://myip:1433;databaseName=mydb;integratedSecurity=true
</connection-url>
<driver>
sqljdbc
</driver>
<security>
<user-name>
username
</user-name>
<password>
password
</password>
</security>
</datasource>
<drivers>
<driver name="sqljdbc" module="com.microsoft.sqlserver.jdbc">
<driver-class>
com.microsoft.sqlserver.jdbc.SQLServerDataSource
</driver-class>
</driver>
</drivers>
Run Code Online (Sandbox Code Playgroud)
在文件夹中%jbosshome%\modules\com\microsoft\sqlserver\jdbc\我有sqljdb4.jar以下内容module.xml:
<?xml version="1.0" encoding="UTF-8"?>
<module name="com.microsoft.sqlserver.jdbc" xmlns="urn:jboss:module:1.0">
<resources>
<resource-root path="sqljdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
Run Code Online (Sandbox Code Playgroud)
当我启动jboss时它会给我以下错误:
> New missing/unsatisfied dependencies: service
> jboss.jdbc-driver.sqljdbc (missing)
Run Code Online (Sandbox Code Playgroud)
任何人都知道我做错了什么或我错过了什么?
我可以通过CLI界面读取系统属性
/system-property=propertyname:read-attribute(name="value")
有没有一种简单的方法可以通过CLI界面更新属性?
我正在使用EJB 3.0和JBoss AS 7.1.1 Final.我尝试将客户端连接到服务器时收到此错误:
Aug 15, 2012 12:05:00 PM org.jboss.ejb.client.EJBClient <clinit>
INFO: JBoss EJB Client version 1.0.5.Final
Exception in thread "main" java.lang.IllegalStateException: No EJB receiver available for handling
[appName:GrahamsProjServer,modulename:GrahamsProjServer,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvoc
ationContext@6a340101
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584)
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:119)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104)
at $Proxy0.test(Unknown Source)
at grahamsprojclient.main.Start.testItAll(Unknown Source)
at grahamsprojclient.main.Start.main(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
这是我的standalone.xml:http://pastebin.com/BuvQ6f2H
这里是我的jboss-ejb-client.properties:http://pastebin.com/mKpqZuZJ
这是我的客户的代码:http://pastebin.com/wcVBZvKn
我的classpath确实包含jboss-ejb-client.properties.通过查看清单我确定了.
当我启动客户端时,服务器已经运行,服务器每次都会打印出来:
12:05:00,330 INFO [org.jboss.as.naming] (Remoting "h890bp1" task-3) JBAS011806: Channel end notification received, …
在使用HornetQ在JBoss 7上配置JMS队列期间(基于standalone-full.xml配置),我注意到一个属性'持久'.

我浏览了几个来源,其中许多人声称队列总是"持久",这意味着即使在发送时潜在的接收器处于非活动状态,也会始终传递消息.
JBoss 7 HornetQ中的这个属性是指临时队列吗?或者此属性是否指某种非临时非持久队列?
我有Eclipse Luna 4.4.1和JBoss Server 7.1.问题是,当我启动服务器时,它永远不会启动,并且在很长一段时间后它会显示超时错误."JBoss无法在450秒内启动".
如何解决这个问题?
控制台显示以下输出,并在此处挂起很长时间:
12:47:54,100 INFO [org.jboss.modules] JBoss Modules version 1.1.1.GA
12:47:54,438 INFO [org.jboss.msc] JBoss MSC version 1.0.2.GA
12:47:54,552 INFO [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final "Brontes" starting
Run Code Online (Sandbox Code Playgroud)
服务器永远不会启动.我已经更改了时间设置,但它从来没有帮助.
jboss7.x ×10
java ×4
jboss ×3
ejb ×2
datasource ×1
deployment ×1
eclipse ×1
eclipse-luna ×1
ejb-3.0 ×1
hornetq ×1
java-ee ×1
jax-rs ×1
jboss-eap-6 ×1
jms ×1
jpa-2.0 ×1
keycloak ×1
many-to-one ×1
nullable ×1
security ×1
sqljdbc ×1