当前位置: 首页 > 知识库问答 >
问题:

Java语言lang.IllegalArgumentException:无法设置java。郎。长田公司。我的包裹。使用者java的id。郎.朗

曹涵润
2023-03-14

我正在使用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);
 }

我相信这应该是一个简单的任务,我相信有一个简单的修复。我会再多考虑一下,确保我在寻找正确的东西。

谢谢

共有3个答案

闻人景澄
2023-03-14

是的,正如@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);
}

这些方法现在起作用了,这些方法的单元测试现在也起作用了。

谢谢

阙辰龙
2023-03-14

user是SQL中的保留关键字。

尝试将其更改为其他内容,看看错误是否消失。

隗锐进
2023-03-14

你试过像下面这样吗

@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。 谢谢你的帮助。

  • 问题内容: 当我在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节),请将其转换为下划线。 但这只是一个建议…

  • 问题内容: 我用来将货币从BigDecimal格式化为字符串。按预期工作,问题在于我们的主要目标是荷兰市场,而默认的荷兰格式很奇怪。 让我解释一下,当格式化-125时,荷兰语将得到“€125-”(预期为“-€125”)。英国按预期方式提供“-£125.50”。 我可以检查语言环境是否为荷兰语,然后在每次我要设置小数格式时都提供一个模式。但是我更喜欢一个解决方案,它可以覆盖荷兰的格式设置。我在考虑以