我正在使用带有注释的Hibernate 3.5.2-FINAL来指定我的持久性映射.我正在努力建立应用程序和一组平台之间的关系.每个应用程序都可用于一组平台.
从我所做的所有阅读和搜索中,我认为我需要将平台枚举类保持为实体,并使用连接表来表示多对多关系.我希望关系在对象级别是单向的,也就是说,我希望能够获得给定应用程序的平台列表,但我不需要找出给定平台的应用程序列表.
这是我的简化模型类:
@Entity
@Table(name = "TBL_PLATFORM")
public enum Platform {
Windows,
Mac,
Linux,
Other;
@Id
@GeneratedValue
@Column(name = "ID")
private Long id = null;
@Column(name = "NAME")
private String name;
private DevicePlatform() {
this.name = toString();
}
// Setters and getters for id and name...
}
@Entity
@Table(name = "TBL_APP")
public class Application extends AbstractEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "NAME")
protected String _name;
@ManyToMany(cascade = javax.persistence.CascadeType.ALL)
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
@JoinTable(name = "TBL_APP_PLATFORM", …Run Code Online (Sandbox Code Playgroud) Google Analytics v4 SDK使用的XML配置文件的参数文档(如Google Play Services 4.3.23发行版中所述)表明ga_dryRun并且ga_logLevel是跟踪器文件中的有效属性.这是我的res/xml/default_tracker.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="ga_dryRun">true</bool>
<string name="ga_logLevel">verbose</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
当我在新的跟踪器上设置此配置文件并运行我的应用程序时,我在日志中看到以下内容:
04-30 13:05:55.303 29266-29266/com.example.app W/GAV3? Thread[main,5,main]: bool configuration name not recognized: ga_dryRun
04-30 13:05:55.303 29266-29266/com.example.app W/GAV3? Thread[main,5,main]: string configuration name not recognized: ga_logLevel
Run Code Online (Sandbox Code Playgroud)
是否有要更新的属性名称?是否不再支持通过XML配置这些功能(它们在v3 SDK中工作)?
我知道我可以从Java设置干运行和日志级别选项,但是能够在XML文件中定义这些选项会很好,所以我可以为不同的构建变体使用不同的文件.
假设我有以下实体为订户建模并使用a CollectionTable来建模订阅列表,如下所示:
@Entity
@Table(name = "SUBSCRIBER")
public class Subscriber {
@ElementCollection
@CollectionTable(name = "PERSON_ORG_SUBSCRIPTIONS",
joinColumns = { @JoinColumn( name = "PERSON_ID", referencedColumnName = "PERSON_ID" ),
@JoinColumn( name = "ORG_ID", referencedColumnName = "ORG_ID" ) } )
@Column(name = "SUBSCRIPTION_NAME")
protected Set<String> _subscriptionNames;
}
Run Code Online (Sandbox Code Playgroud)
所以这创建了一个包含列的表PERSON_ID,ORG_ID和SUBSCRIPTION_NAME.
我正在尝试在SUBSCRIPTION_NAME列上创建数据库索引.但是如果我把以下注释放在_subscriptionNames:
@org.hibernate.annotations.Index( name="subscription_idx", columnNames={"SUBSCRIPTION_NAMES"} )
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
org.hibernate.MappingException: Unable to find logical column name from physical name null in table SUBSCRIBER
Run Code Online (Sandbox Code Playgroud)
我也尝试org.hibernate.annotations.Table在Subscriber实体上使用注释,但似乎没有办法让它引用该PERSON_ORG_SUBSCRIPTIONS …