我正在使用Java 8与JPA2/Hibernate5和MySQL。
tables
+--------+ +----------------+ +--------------+
| User | | OrgMember | | Organization |
+--------+ +----------------+ +--------------+
| ID | | ID | | ID |
| NAME | | userId | +--------------+
+--------+ | orgId |
+----------------+
这是连接表定义
@Entity
@Table(name = "org_members")
public class OrgMember implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId", referencedColumnName = "id")
private User user;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "orgId", referencedColumnName = "id")
private Organization organization;
以下是用户表的定义:
@Entity
@Table(name = "user")
public class User implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
最后,这里是组织表的定义
@Entity
@Table(name = "organization")
public class User implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
我将Spring 5数据存储库用于OrgMemberRepository
@Repository("organizationMemberRepo")
public interface OrganizationMemberRepository extends JpaRepository<OrgMember, Long>
{
List<OrgMember> findByUser(Long userId);
List<OrgMember> findByOrganization(Long orgId);
}
正在突破的是单元测试:
@Test
public void testFindByOrganization()
{
Long orgId = 1L;
List<OrgMember> orgMemberList =
organizationMemberRepository.findByOrganization(orgId);
assertNotNull(orgMemberList);
assertEquals(true, orgMemberList.size() > 0);
}
@Test
public void testFindByUser()
{
Long userId = 3L;
List<OrgMember> orgMemberList = organizationMemberRepository.findByUser(userId);
assertNotNull(orgMemberList);
assertEquals(true, orgMemberList.size() > 0);
}
我相信这应该是一个简单的任务,我相信有一个简单的修复。我会再多考虑一下,确保我在寻找正确的东西。
谢谢
是的,正如@MindhunMohan所描述的,我改变了定义,它起作用了。
我现在拥有的方法如下:
@Repository("organizationMemberRepo")
public interface OrganizationMemberRepository extends JpaRepository<OrgMember, Long>
{
List<OrgMember> findByUser(User user);
List<OrgMember> findByOrganization(Organization org);
List<OrgMember> findByUserId(Long userId);
List<OrgMember> findByOrganizationId(Long orgId);
}
这些方法现在起作用了,这些方法的单元测试现在也起作用了。
谢谢
user是SQL中的保留关键字。
尝试将其更改为其他内容,看看错误是否消失。
你试过像下面这样吗
@Repository("organizationMemberRepo")
public interface OrganizationMemberRepository extends JpaRepository<OrgMember, Long>
{
List<OrgMember> findByUserId(Long userId);// or findByUser_Id
List<OrgMember> findByOrganizationId(Long orgId);// or findByOrganization_Id
}
因为在这种情况下,实现界面期间的查询生成将由用户执行。Id和组织。Id,然后长参数将按预期工作。
对于可能出现的用户关键字问题,请尝试将其从表(name=“user”)更改为表(name=“user””)
我为我的应用程序开发一个身份验证组件。我正在使用带有盐密码的Apache Shiro API。 谢谢你的帮助。
(面着玩玩,过了,但没去) (没问八股,基本场景题和之前两家公司实习工作内容和代码能力) 主要是前大二和大三前两家公司工作内容,项目技术。 nacos 配置中心和yml springboot Condition 如何实现对象的自动配置条件。 自己手写哪些sdk jdk8:Stream流,lamda 工具包依赖:jackson,fastjson,hutool,easyExcel,
问题内容: 当我在Linux机器上使用默认的Java语言环境时,它带有美国语言环境设置,应在哪里进行更改以使其具有正确的语言环境? 问题答案: 我相信Java会从启动它的环境变量中收集这些信息,因此您需要确保正确设置LANG和LC_ *环境变量。 语言环境手册页包含有关所述环境变量的完整信息。
今天上午面的,傍晚发的offer -- 还在考虑中... 还有一个CSDN的机会(刚刚提交机试题),看能不能冲一冲 1. Java中的IO模型 2. 说说Java中的集合 3. 垃圾回收器+回收算法 3.5 JVM内存结构、垃圾回收,类加载过程 4 . Redis分布式锁 5. 说说:reids哨兵心跳+宕机后怎么选举新的master节点 ? 6. redis 为什么这么快? 7. redis穿透
我正在使用jersey构建一个web服务应用程序。使用apache shiro进行授权/身份验证im。 我找到了一些演示如何在web应用程序中使用apache shiro的教程。它们使用显示登录方法。具有用户名和密码字段的jsp页面,并且超过此字段。jsp页面是在shiro中配置的。我喜欢这样: 我想知道如何在没有任何密码的情况下进行身份验证。jsp页面,因为我的项目只有web服务。因此,我想我需
问题内容: 假设您正在为BarBaz Incorporated开发项目的核心模块。您的代码片段可能如下所示: 如果您的公司网站不是,而是惯例,那会是什么样的惯例? 问题答案: SUN时代的Java语言规范给出了建议的约定: 如果域名包含连字符或标识符中不允许的任何其他特殊字符(第3.8节),请将其转换为下划线。 但这只是一个建议…