我有一个要求,其中我的许多实体需要Long值和与其他实体的@ManyToOne关系.使用MappedSuperclass可以通过以下方式轻松实现此要求:
@MappedSuperclass
public class BaseEntity {
@Column(name = "value", nullable = false)
private Long value;
@JoinColumn(name = "some_entity_id", nullable = false)
@ManyToOne(fetch = FetchType.EAGER)
private SomeEntity some;
Run Code Online (Sandbox Code Playgroud)
问题是长值和实体组合必须是唯一的.是否可以在超类中定义索引?如果我在实体的@Table中定义索引,则代码按预期工作
@UniqueConstraint(name = "uq1", columnNames = {"value", "some_entity_id"})
Run Code Online (Sandbox Code Playgroud)
挫折是必须沿着所有子类复制约束,然后还需要复制所有更改,使继承几乎无用(绝对不是那么优雅)
总结一下真正的问题是:可以从@MappedSuperclass定义复合唯一约束吗?如果答案是否定的,那你会怎么做?
PS:我知道只有当表格生成生效时,这才是相关的,它是我们编码和最佳实践政治的全部内容.
我有一个 Maven War 项目,它依赖于 EJB Maven 项目。EJB 项目处理所有业务逻辑,包括通过 Hibernate 进行数据库访问。这两个项目都是 JEE6 并使用 maven 在 glassfish 3.1.2 上运行。我目前正在尝试配置 Log4j 以在所描述的场景中工作(也记录休眠)。我的 ejb 的 src/main/resources 文件夹中有以下 log4j.xml 文件(我认为它位于类路径中):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j=
"http://jakarta.apache.org/log4j/"
debug="false">
<appender name="consoleAppender"
class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d
%-5p [%c{1}] %m %n" />
</layout>
</appender>
<logger name="javabeat.net.log4j" additivity="false" >
<level value="INFO" />
<appender-ref ref="consoleAppender"/>
</logger>
</log4j:configuration>
Run Code Online (Sandbox Code Playgroud)
我不断从 log4j 收到此错误:
严重:log4j:错误“org.apache.log4j.xml.DOMConfigurator”对象无法分配给“org.apache.log4j.spi.Configurator”变量。
严重:log4j:错误类“org.apache.log4j.spi.Configurator”已加载
严重: log4j:ERROR [WebappClassLoader (delegate=true; repositories=WEB-INF/classes/)] 而对象类型
严重:log4j:错误“org.apache.log4j.xml.DOMConfigurator”已由[WebappClassLoader(delegate=true;repositories=WEB-INF/classes/)]加载。
严重:log4j:错误无法实例化配置器[org.apache.log4j.xml.DOMConfigurator]。
严重:log4j:警告找不到记录器(org.hibernate.type.BasicTypeRegistry)的附加程序。 …
eclipselink ×1
glassfish-3 ×1
hibernate ×1
java-ee ×1
java-ee-6 ×1
jpa-2.1 ×1
log4j ×1
maven-3 ×1