我使用JPA2映射了以下实体:
@Entity
public class Translation {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
private String locale;
@Column(name = "business_code",insertable = true,updatable = false,length = 200,nullable = false)
private String code;
private String text;
// Gettets and setters
....
}
然后我意识到than对(locale,code)应该是唯一的,所以我将实体更改为由locale,code组成的embeddedId,并从映射中删除了列id。这样,这一对将充当主键,它们不能重复:
结果:
@Entity
public class Translation {
@EmbeddedId
private TranslationId translationId;
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public TranslationId getTranslationId() {
return translationId;
}
public void setTranslationId(TranslationId translationId) {
this.translationId = translationId;
}
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
}
@Embeddable
public class TranslationId implements Serializable{
private static final long serialVersionUID = 1L;
private String locale;
@Column(name = "business_code",insertable = true,updatable = false,length = 200,nullable = false)
private String code;
@Override
public boolean equals(Object obj){
return EqualsBuilder.reflectionEquals(this, obj);
}
@Override
public int hashCode(){
return HashCodeBuilder.reflectionHashCode(this);
}
public String getLocale() {
return locale;
}
public void setLocale(String locale) {
this.locale = locale;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
@Repository
public interface TranslationRepository extends JpaRepository<Translation,TranslationId> {
}
既然你的第一个问题已经解决了,我来回答第二个问题
我想让Spring数据只按区域设置(而不是按代码)查询所有翻译,我怎么做?
locale
仍然可以通过translationid
作为单个属性访问。在JPQL中,您可以编写
SELECT t FROM Translation t WHERE t.translationId.locale = :locale
@Query("SELECT t FROM Translation t WHERE t.translationId.locale = :locale")
public List<Translation> findByLocale(@Param("locale") String locale)
public List<Translation> findByTranslationIdLocale(String locale)
我在使用聚合框架从MongoDB读取文档时遇到了问题:我的结果中总是得到空ID。这只发生在具有复合ID的文档中。我尝试了各种版本的spring-data-mongob(1.10.12, 2.0.7),结果相同。 实体定义类 测试代码 输出 调试到以下方法MappingMongoConverter。read(final mongopersistenentity entity、final Docume
我有一些代码可以循环遍历值并更改表中的条目。变量$change_val、$column和$id的5个值都正确地回显了,所以我假设bindParam的用法有问题(但我不确定它是什么)。 $_POST语句之所以存在,是因为我想要的值实际上是从另一个文件传递的。不过,当我在循环中放置适当的echo语句时,它们都会打印出正确的值。 我也试过bindValue,但也没用。我看不到任何错误,至少编译得很顺利,
我想让用户节点中的userName属性作为唯一。我使用了下面的代码,但它没有在Neo4j数据库中创建唯一的约束。 仅供参考,我使用的是Neo4j服务器版本:3.3。6(社区)带Spring靴2 但是如果我自己在Neo4j浏览器中创建一个约束,它就会工作。 有没有一种方法可以强制Spring Data Neo4J创建唯一的属性,而不需要自己在数据库中创建它们?
我是neo4j spring数据的新手,我尝试执行的查询不是在我的spring boot应用程序上工作,而是在neo4j web界面上工作。 我在数据库上有3个节点:“Oracle”、“Java”和“Cloud”我正在尝试运行的查询: 因此,使用neo4j web界面,如果我输入“CL”,它将返回“Oracle”和“Cloud”,这是正确的。 使用spring数据,我得到了所有3个结果,这是错误的
我想用Rxjava使用ROOM,以下是我的代码: 我的数据库结构类: 这是我的ProductDAO课程: 这是我用于创建和管理数据库的数据库类: 这是我处理数据库的活动: 下面是发生的情况,当我第一次启动我的activity类时,没有发生错误,当我从emulator下载创建的数据库并在sqlite数据库管理器中打开它时,问题是文件是空的,没有创建数据库 当我回去重新打开数据库时,我得到了很多错误:
我需要合并两个不同大小的数据帧。较大的一个()有一列有几个重复的值(),较短的一个()有列,但其值不重复。df2还有一个ID列。我需要在中使用中的ID的新列,根据中的重复值重复。下面的例子可能会让它更清楚。 .