我有模块A和模块B,它们都有JPA注释类.模块B有一个单元测试,从A中提取几个实体.两个模块编译正常,运行时依赖项设置正常,但是当我尝试运行单元测试时出现以下错误:
java.lang.IllegalArgumentException: Unknown entity: MyClassHere
Caused by: org.hibernate.MappingException: Unknown entity: MyClassHere
Run Code Online (Sandbox Code Playgroud)
这发生在EntityManager.merge调用中.
由于模块B具有所有hibernate配置文件等,我猜它根本就没有发现我的A类是一个实体.
我尝试将以下内容添加到persistence.xml中
<exclude-unlisted-classes>false</exclude-unlisted-classes>
Run Code Online (Sandbox Code Playgroud)
在hibernate.cfg.xml中我添加了:
<property name="packagesToScan">myNamespace.*</property>
Run Code Online (Sandbox Code Playgroud)
然后:
<property name="packagesToScan">
<array>
<value>myNamespace.*</value>
</array>
</property>
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,"属性"的内容必须匹配null.然后我尝试了:
<mapping class="myNamespace.*" />
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
编辑:我忘了提到的一件可能有意义的事情是,这两个模块被设置为单独的项目(我正在使用eclipse),所以目录结构是不同的.运行时依赖项都已正确设置,但由于.class文件最终位于不同的目录中,我认为hibernate可能不会扫描那些.
我制作了一些带有凹坑的图表,它们在铬中看起来很好(第43节),但在Firefox(第40版)中它们的渲染不正确.
我在调试器中检查了页面,我可以看到<svg>标签下面有一个<g>标签.检查员显示摹铬标记为720x556,并在Firefox为730x97,这显然会导致一个扭曲的阴谋.
在许多图表上都会出现同样的问题 - 气泡图,折线图和条形图.
我正在使用dimple 2.1.6和d3 3.5.6
这是我的代码示例:
link: function(scope, element, attrs) {
var svg = dimple.newSvg(element[0], 800, 600);
svg.text("Charttitle");
var myChart = new dimple.chart(svg, data);
myChart.addCategoryAxis("x", "column1");
myChart.addCategoryAxis("y", "column2");
myChart.addCategoryAxis("z", "column3");
myChart.addSeries("column1", dimple.plot.bubble);
myChart.draw();
}Run Code Online (Sandbox Code Playgroud)
<div ng-view class="ng-scope">
<div class="col-md-12 ng-scope" ng-controller="MyController">
<traffic-plot val="p2pTraffic" load-data="loadData(ip)" class="ng-isolate-scope">
<svg width="800" height="600">
<g>
<!-- The rest of the dimple generated code -->
</g>
</svg>
</traffic-plot>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
有任何建议如何解决这个问题?
编辑:在做了一些研究后,我发现它<g>是一个容器元素,用于对图形元素进行分组,允许组元素(在本例中为svg)作为一个元素处理.在元素检查器中,svg似乎具有正确的大小,但顶级 …
是否有一个包定义了我可以在项目中导入的Java基元的大小?我正在做一些手动位设置,我保留一个字节索引.我currentByte += 4设置一个int(魔术数字不赞成)时我不想做,我宁愿这样做currentByte += <SomePackage>.SIZE_OF_INT
我想我可以定义自己的,但这有点笨重,特别是如果那些在某个地方可用.
我有父/子单向关系.当我检查日志时,我看到每个子行都有一个单独的插入查询,相当于让我们说:
insert into childTable(col1, col2) values(val1, val2);
insert into childTable(col1, col2) values(val3, val4);
Run Code Online (Sandbox Code Playgroud)
在单个查询中插入所有行不是更有效吗?有点像:
insert into childTable(col1, col2) values(val1, val2), (val3, val4)
Run Code Online (Sandbox Code Playgroud)
有没有办法强制JPA生成多行插入而不是单行插入?
编辑: 我目前正在使用级联插入,所以我插入父级,并自动生成子项的插入.我宁愿继续使用该方法,而不是让我们说手动创建一个巨大的SQL查询,因为我认为级联插入产生更清晰的代码.
我已经定期刷新会话以控制L1缓存的大小,因此耗尽内存不是问题.
这已经被多次询问了,但是我找不到任何好的答案,所以我会再问一次.
我有父子单向关系如下:
@Entity
@Table(name = "PARENT")
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long parentId;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
@JoinTable(name = "CHILD", joinColumns = @JoinColumn(name = "parent_id"), inverseJoinColumns = @JoinColumn(name = "ID"))
private List<Child> children;
}
@Entity
@Table(name = "CHILD")
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "PARENT_ID")
private Long parentId;
//some other field
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个父实例,为它分配一个子列表并尝试保留它:
Parent p = new Parent();
List<Child> children = …Run Code Online (Sandbox Code Playgroud) 我有一个bash脚本运行的东西:
python myscript.py --input=/path/file --someOption=value > /path/file
Run Code Online (Sandbox Code Playgroud)
如果我在没有重定向的情况下运行它,一切正常.如果我使用重定向运行它,文件将被截断.我怀疑python正在执行整行,包括重定向,实际上重定向必须由bash执行.
我试过了:
exec "python myscript.py --input=/path/file --someOption=value" 但我得到命令未找到错误.
如何让python只执行python部分,重定向由bash执行?