小编Tom*_*omR的帖子

单个事务中的多个 Spring Data JPA 存储库

我正在尝试映射以下代码: * 订单包含许多 OrderItems * 文章可以被(包含)许多 OrderItems 引用

在一笔交易中,我需要创建订单、多篇文章和带有新文章的订单项。当有直线路径时,一切都清楚了 - 订单包含 OrderItems 等等 - 然后我可以打电话

orderRepository.save(order);
orderRepository.flush();
Run Code Online (Sandbox Code Playgroud)

保存具有 OrderItems 实体的新订单实体。问题始于尝试保存 Article 实体。显然需要更多的工作,因为我收到错误消息;

org.springframework.dao.InvalidDataAccessApiUsageException: 
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing
Run Code Online (Sandbox Code Playgroud)

如何在一笔事务中组织这样的工作?多个存储库是否可以在单个事务下工作,如果可以,则由其flush() 完成事务。是否有必要进行多次刷新(例如,一个用于文章实体,另一个用于订单),如果是,如何回滚所有刷新(如果需要)?

显然,不可能将存储库与简单的 EntityManager.getTransaction().{begin(), commit()} 代码混合使用,因为错误消息是:

java.lang.IllegalStateException: Cannot obtain local EntityTransaction from a transaction-synchronized EntityManager
Run Code Online (Sandbox Code Playgroud)

如果一个实体 (OrderItem) 由两个实体(订单和文章)拥有并且所有三个实体应在一个事务中创建,那么最佳实践是什么?

添加了部分代码。CompleteOrder 是测试过程,其中为新订单创建 5 个项目和 5 个新文章。此过程给出了异常“引用和未保存的瞬态实例”。我正在为文章实体使用复合键,但这不应该成为问题,我现在正在尝试使用具有通常单字段键的文章实体相同的场景。

@Entity
public class Order extends FrameworkEntity {
    ...
    @OneToMany(mappedBy="order", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private List<OrderItem> orderItems = …
Run Code Online (Sandbox Code Playgroud)

orm spring jpa jpa-2.0 spring-data

2
推荐指数
1
解决办法
3809
查看次数

为什么我不能在@NgModule中导入Angular 2服务?

我有ExchangeServiceAngular 2 @Injectable类,并且有一个应用程序主模块:

@NgModule({
    imports: [
        BrowserModule,
        HttpModule,
        FormsModule,
        ReactiveFormsModule,
        ExchangeService,
        RouterModule.forRoot(routes)
    ],
   providers: [
    {   provide: LocationStrategy,
        useClass: HashLocationStrategy
    },
    ExchangeService
   ]
...})
Run Code Online (Sandbox Code Playgroud)

引发异常

(index):16 Error: (SystemJS) Unexpected value 'ExchangeService' imported by the module 'Application5'
     Error: Unexpected value 'ExchangeService' imported by the module 'Application5'
     Error: (SystemJS) Unexpected value imported by the module Error: Unexpected value imported by the module
     Error: Unexpected value imported by the module at eval (http://127.0.0.1:8080/node_modules/@angular/compiler/bundles/compiler.umd.js:13982:37) at Array.forEach (native) at CompileMetadataResolver.getNgModuleMetadata 
     Error: Unexpected …
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular

2
推荐指数
1
解决办法
507
查看次数

是否可以(以及如何)查看使用“pip install package-name”安装的包的 Python 源代码?

是否可以(以及如何)查看随 一起安装的包的 Python 源代码'pip install package-name'?我找到了wheels文件,但它是编译格式的。安装消息也谈到了构建和安装,所以,我猜,现在我的计算机上只有编译的代码可用?

python pip

2
推荐指数
1
解决办法
6016
查看次数

是否可以用Java编写NetLogo模拟程序?

我正在尝试开发 NetLogo 模型(消费者研究),但我想更多地控制代理(海龟)是什么以及它们可以做什么,因此我想用 Java 编写代码,导入 Java 库,可能的话,使用规则引擎等等。在 NetLogo 中这可能吗?

如果没有,那么还有哪些具有 Java 编程能力的代理建模框架呢?

java netlogo

1
推荐指数
1
解决办法
866
查看次数

如何在C中舍入8.475到8.48(考虑到表示问题的舍入函数)?减少问题发生的可能性

我试图将8.475转到8.48(在C中为小数点后两位).问题是8.475内部表示为8.47499999999999964473:

double input_test =8.475;    
printf("input tests: %.20f, %.20f \n", input_test, *&input_test);
Run Code Online (Sandbox Code Playgroud)

得到:

input tests: 8.47499999999999964473, 8.47499999999999964473 
Run Code Online (Sandbox Code Playgroud)

所以,如果我有一个理想的圆函数,那么它将在8.475 = 8.4749999 ...到8.47.所以,内部圆函数不适合我.我看到在"下溢"的情况下出现舍入问题,因此我尝试使用以下算法:

double MyRound2( double * value) {
  double ad;
  long long mzr; 
  double resval;

  if ( *value < 0.000000001 )
    ad = -0.501; 
  else
    ad = 0.501;

  mzr = long long (*value);
  resval = *value - mzr;
  resval= (long long( resval*100+ad))/100;

  return resval;
} 
Run Code Online (Sandbox Code Playgroud)

这解决了"下溢"问题,它也适用于"溢出"问题.问题是有效值x.xxx99,这个函数错误地给出了更大的值(因为0.501中的0.001).如何解决这个问题,如何设计可以检测浮点表示问题的算法并且可以考虑这个问题呢?也许C已经有这么聪明的舍入功能?也许我可以为常量广告选择不同的值 - 这样的舍入错误的概率变为零(我主要使用最多4个十进制密码的货币值).

我已经阅读了所有关于浮点表示的popoular文章,我知道有棘手和无法解决的问题,但我的客户不接受这样的解释,因为客户端可以清楚地证明Excel处理(重现,舍入等)浮点数而不代表问题.

c floating-point rounding

1
推荐指数
1
解决办法
170
查看次数

如何创建Laravel Eloquent实体的空实例

我有Laravel PHP代码:

class Contract extends Model
{
    public $table = "CONTRACTS";
    public $timestamps = false;
    protected $primaryKey = 'ID';
    protected $fillable = array("ID", "CONTRACT_DATE", "PRICE_TYPE", "AMOUNT");
}
Run Code Online (Sandbox Code Playgroud)

我希望Laravel控制器有一个特殊的方法,它将Contracts实体的空实例作为json对象返回.我们的想法是,Laravels的代码为此实体提供所有必要的默认分配(例如,来自生成器的ID,根据用户首选项的默认价格类型,根据区域的默认货币等),并返回可从Javascript界面​​使用的实体.Javascript接口稍后将决定是否丢弃此实体是否继续使用此实体并最终使用适当的插入方法或Laravelt REST API保存(插入)它.

问题是 - 如何创建Laravel模型的空实例?例如

class Contracts extends Controller
    public function create() {
        $contract = new Contract;
        return json_encode($contract);
    } 
}
Run Code Online (Sandbox Code Playgroud)

代码只是返回

[]
Run Code Online (Sandbox Code Playgroud)

但我希望有这样的东西:

{"ID":1111,
 "CONTRACT_DATE":null,
 "PRICE_TYPE":"2",
 "AMOUNT":0.0}
Run Code Online (Sandbox Code Playgroud)

这可能与Laravel有关.一种解决方案可能是使用返回空值的原始SQL,然后可以希望Laravel可以将此SQL转换为对象...

php rest json laravel laravel-5.2

1
推荐指数
1
解决办法
8879
查看次数

Coq定理中的Coq箭头-&gt;是什么意思?

我试图理解Coq定理:

Theorem thm0 : UseCl Pos (PredVP (UsePN john_PN) walk_V) ->
               UseCl Pos (PredVP (UsePN john_PN) walk_V).
intro H.
exact H.
Qed.
Run Code Online (Sandbox Code Playgroud)

来自https://github.com/GU-CLASP/FraCoq/blob/master/Tutorial.org

箭头符号是什么意思->?据我了解,然后Coq使用两个箭头https://softwarefoundations.cis.upenn.edu/lf-current/Basics.html:1)双箭头定义类型构造函数,2)单箭头->定义新类型。但是这个定理是陈述,而不是类型定义。为什么会有这个箭头?如何将此陈述理解为Coq定理?

coq

1
推荐指数
1
解决办法
268
查看次数

如何理解Coq类型构造函数var(t:T)

我正在阅读Coq的线性逻辑机械化http://www.cs.cmu.edu/~iliano/projects/metaCLF2/inc/dl/papers/lsfa17.pdfhttps://github.com/brunofx86/LL我无法termhttps://github.com/brunofx86/LL/blob/master/FOLL/LL/SyntaxLL.v了解归纳类型的类型构造函数:

Inductive term  :=
    |var (t: T) (* variables *)
    |cte (e:A) (* constants from the domain DT.A *)
    |fc1 (n:nat) (t: term) (* family of functions of 1 argument *)
    |fc2 (n:nat) (t1 t2: term). (* family of functions of 2 argument *)
Run Code Online (Sandbox Code Playgroud)

关于这个样本,我有两个问题(我正在阅读本文中的https://softwarefoundations.cis.upenn.edu/lf-current/Basics.html):

  • 什么是(超级)类型term?Software Foundations总是指定新类型的(超级)类型,例如Inductive color : Type;
  • 主要问题 - 如何理解类型构造函数var (t: T).Software Foundation在其第一章中仅提供了两种类型的构造函数:常量white : color和函数primary : rgb …

logic functional-programming coq

1
推荐指数
1
解决办法
106
查看次数

如何在Delphi表单上创建新的IOTAComponent

我正在尝试编写Delphi Open Tools API工具,用于自动生成和更新放置在数据模块或表单上的组件.我已经可以列出所有组件(每个组件由(IOTAComponent的类)实例表示)并修改它们的属性(setPropByName(...),getPropValueByName(...)).问题是 - 如何创建新组件 - 在Open Tools API代码中,以便将此组件添加到datamodule的形式?

我正在使用IOTAModuleServices API的一部分,我猜这是手头任务的正确部分,不是吗?

delphi form-designer opentools

0
推荐指数
1
解决办法
349
查看次数