我试图在JPA映射实体上引入一个多键约束:
public class InventoryItem {
@Id
private Long id;
@Version
private Long version;
@ManyToOne
@JoinColumn("productId")
private Product product;
@Column(nullable=false);
private long serial;
}
Run Code Online (Sandbox Code Playgroud)
基本上(产品,串行)对应该是唯一的,但我只找到了一种说串行应该是唯一的方法.这显然不是一个好主意,因为不同的产品可能具有相同的序列号.
有没有办法通过JPA生成这个约束,还是我被迫手动创建它到DB?
是否可以使用如下语法将事件从内部对象实例委托给corrent对象的事件处理程序:
public class MyControl {
public event EventHandler Finish;
private Wizard wizard;
public MyControl( Wizard wizard ) {
this.wizard = wizard;
// some other initialization going on here...
// THIS is what I want to do to chain events
this.wizard.Finish += Finish;
}
}
Run Code Online (Sandbox Code Playgroud)
上述结构的动机是我有许多类似向导的UI流程,并希望将Back,Forward和Cancel处理分离到单个类,以在我的设计中尊重Open Closed Principle和Single Responsibility Principle.
添加方法OnFinish并进行正常检查总是有可能的,但是如果有很多嵌套事件,那么最终将会有大量的样板代码.
我正在为Android设备编写自己的SyncAdapter,它应该将电视广播信息同步到设备,但是遇到了在帐户首选项的数据和同步部分下没有看到Synchronize"mydata"复选框的问题.
我已经实现了自己的SyncAdapter并在xml中正确定义了它:
这是我的sync.xml:
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="com.example.tv.programs"
android:accountType="com.example.tv.sync"
android:supportsUploading="false"
android:userVisible="true"
/>
Run Code Online (Sandbox Code Playgroud)
android清单的相应部分,我定义了我的同步服务和提供者:
<service android:name=".sync.ProgramSynchronizationService" android:exported="true" android:process=":programs">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/sync" />
</service>
<provider android:name="com.example.tv.providers.ProgramContentProvider"
android:authorities="com.example.tv.programs" />
Run Code Online (Sandbox Code Playgroud)
我做错了什么,因为我在数据和同步部分没有看到任何东西?